码迷,mamicode.com
首页 > 其他好文 > 详细

Pascal's Triangle

时间:2017-02-10 13:08:14      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:asc   数组   开始   public   triangle   杨辉三角   row   ++   下标   

Given numRows, generate the first numRows of Pascal‘s triangle.

For example, given numRows = 5,
Return

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

杨辉三角,给出行数,生成该行数的杨辉三角

一种解法:
public class Solution {
public List<List<Integer>> generate(int numRows)
{
    List<List<Integer>> allrows = new ArrayList<List<Integer>>();
    ArrayList<Integer> row = new ArrayList<Integer>();
    for(int i=0;i<numRows;i++)
    {
        row.add(0, 1);
        for(int j=1;j<row.size()-1;j++)
            row.set(j, row.get(j)+row.get(j+1));
        allrows.add(new ArrayList<Integer>(row));
    }
    return allrows;
    
}
}

例 i = 5的生成过程:

i = 0

  row = [1]; 内层循环不执行; allrows = [[1]];

i = 1;

  row = [1,1];内层循环不执行; allrows = [[1], [1, 1]];

i = 2;

  row = [1, 1, 1]; 

    j = 1; row[1] = row.get(1) + row.get(2); row = [1, 2, 1];

  allrows = [[1], [1, 1], [1, 2, 1]];

i = 3;

  row = [1, 1, 2, 1];

    j = 1; row = [1, 3, 2, 1]; j = 2; row = [1, 3, 3, 1];

  allrows = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];

i = 4;

  row = [1, 1, 3, 3, 1];

    j = 1; row = [1, 4, 3, 3, 1]; j = 2; row = [1, 4, 6, 3, 1]; j = 3; row = [1, 4, 6, 4, 1]; 

  allrows = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]];

row.add(0,1)是在数组的开始,即下标为0的位置插入元素1,其他元素后移一位。

 

Pascal's Triangle

标签:asc   数组   开始   public   triangle   杨辉三角   row   ++   下标   

原文地址:http://www.cnblogs.com/ltchu/p/6385789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!