给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> yhsjList1 = new ArrayList<>(); List<Integer> yhsjList2 = new ArrayList<>(); for(int i = 0; i < rowIndex + 1; i++) { //每一行第一位为 1 yhsjList1.add(1); /** *从杨辉三角第三行(i=2)开始 *yhsjList2保存上一行 *yhsjList1根据yhsjList2计算下一行(同117题) */ for(int j = 1; j < i; j++) yhsjList1.add(yhsjList2.get(j-1) + yhsjList2.get(j)); //除了第一行,其它行的最后一位都置为 1 if(0 != i) yhsjList1.add(1); yhsjList2 = yhsjList1; yhsjList1 = new ArrayList<Integer>(); } return yhsjList2; } }