[LeetCode] 118. 杨辉三角(Java)
1.题目描述
给定一个非负整数 *numRows
,*生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:输入: numRows = 1
输出: [[1]]
2.解题思路
把握杨辉三角的规律
假设二维数组的长度大于2
一个子数组是由前一个子数组得到的,此数组的第一个元素与最后一个元素都是1,也就是j=0与i=j
的情况下,中间的元素索引[j]是由前一个子数组元素的第[j-1]与[j]相加得到的.
3.解法
class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> list = new ArrayList<List<Integer>>();for (int i = 0; i < numRows; i++){List<Integer> tempList = new ArrayList<>();for (int j = 0; j <= i; j++){if (j == 0 || j == i){tempList.add(1);}else {tempList.add(list.get(i - 1).get(j - 1) + list.get(i - 1).get(j));}}list.add(tempList);}return list;}
}
4.技能点
无