您的位置:首页 > 职场人生

Leetcode之Pascal's Triangle 问题

2017-09-22 19:31 357 查看
问题描述:

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这种调用了,因为这样容易产生空指针异常,说回来还是第一种更好理解一些,更符合人类的惯性思维,不过第二种理解了也就不难了,毕竟不是啥高深的东西。

代码:

第一种添加的方法:





第二种添加的方法:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode 算法 面试