解法一:数学
思路:分两层,最外层的列表ret和列表内元素(也是列表)row。然后,对于杨辉三角的每一行,两边均为1(j0 || j1),中间的元素,利用上一行对应两个元素之和(ret.get(i-1).get(j-1)+ret.get(i-1.get(j)))。最后,再将每一行添加到ret中。
时间复杂度:O(numRows^2)。
空间复杂度:O(1)。不考虑返回值的空间占用
public static List<List<Integer>> generate(int numRows) { List<List<Integer>> ret = new ArrayList<List<Integer>>(); for (int i = 0; i < numRows; ++i) { List<Integer> row = new ArrayList<Integer>(); for (int j = 0; j <= i; ++j) { if (j == 0 || j == i) { row.add(1); } else { row.add(ret.get(i - 1).get(j - 1) + ret.get(i - 1).get(j)); } } ret.add(row); } return ret; } }
链接:https://leetcode-cn.com/problems/pascals-triangle/solution/yang-hui-san-jiao-by-leetcode-solution-lew9/
来源:力扣(LeetCode)。