119. 杨辉三角 II
解题思路
1.通过阅读题意,结果只需要输出结果行,所以每次只需存储前一行数据即可
2.初始化,第一行数据
3.开始双层for循环遍历,结果行每个数值==pre.get(j) + pre.get(j - 1)
4.针对于行为0、列为0、行等于列的特殊位置,数值==1
5.遍历完每行数据,此时的result list赋值为pre list
6.每次循环每行数据开始前,clear result list,只需要save pre list
解题遇到的问题
1.不用数组存储,优化空间复杂度
##解法1
class Solution {
public static List<Integer> getRow(int rowIndex) {
List<Integer> result = new ArrayList<Integer>();
List<Integer> pre = new ArrayList<Integer>();
pre.add(1);
for (int i = 0; i < rowIndex + 1; i++) {
result.clear();
for (int j = 0; j <= i; j++) {
if (i == 0 || j == 0 || j == i) {
result.add(1);
} else {
result.add(pre.get(j) + pre.get(j - 1));
}
}
pre.clear();
pre.addAll(result);
}
return result;
}
}
网友评论