Leetcode之Pascal's Triangle 问题

来源:互联网 发布:有没有唱歌软件 编辑:程序博客网 时间:2024/06/05 17:43

问题描述:

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]
]

问题来源:Pascal's Triangle (详细地址:https://leetcode.com/problems/pascals-triangle/description/)

思路分析:根据提示,我们可以看见这只是一个List里面嵌套了一个List,而且你会发现下面的是怎么延展开的:

1.首先每个list里面的第一个元素和最后一个元素都是1;

2.然后中间的元素都是由头上的两个元素加起来的。

所以,在这我们用i来表示第几个list,然后j来表示这个list里面的第j个元素。另外,i和j都是从0开始的,把上面的两个结论翻译过来就是:

1.if(j == 0 || j == i)

      list.add(1);//这里采用了自动封箱操作

2.list.add(j, list.get(j - 1) + list.get(j));//代码中采用的是result.get(i - 1).get(j - 1).......是因为我们需要通过result取出里面的每一个list

不过最后我还给出了另外一种解法,不用通过get.get这种调用了,因为这样容易产生空指针异常,说回来还是第一种更好理解一些,更符合人类的惯性思维,不过第二种理解了也就不难了,毕竟不是啥高深的东西。

代码:

第一种添加的方法:

第二种添加的方法:
























原创粉丝点击