大家好,我是小魔龍,Unity3D軟體工程師,VR、AR,虛拟仿真方向,不定時更新軟體開發技巧,生活感悟,覺得有用記得一鍵三連哦。
一、題目
1、算法題目
“給定一個非負索引 rowIndex ,傳回 楊輝三角的第 rowIndex 行。”
題目連結:
來源:力扣(LeetCode)
連結: 119. 楊輝三角 II
2、題目描述
給定一個非負索引
rowIndex
,傳回「楊輝三角」的第
rowIndex
**行。
在「楊輝三角」中,每個數是它左上方和右上方的數的和。
示例 1:
輸入: rowIndex = 3
輸出: [1,3,3,1]
複制
示例 2:
輸入: rowIndex = 0
輸出: [1]
複制
二、解題
1、思路分析
上一題是根據行數,生成「楊輝三角」的前
numRows
行。
這一題是根據行數,傳回「楊輝三角」的第 rowIndex 行。
解法基本一緻都是根據「楊輝三角」的性質,一行一行的計算楊輝三角。
2、代碼實作
代碼參考:
class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> row = new ArrayList<Integer>();
row.add(1);
for (int i = 1; i <= rowIndex; ++i) {
row.add(0);
for (int j = i; j > 0; --j) {
row.set(j, row.get(j) + row.get(j - 1));
}
}
return row;
}
}
複制
3、時間複雜度
時間複雜度 : O(rowIndex2)
空間複雜度: O(1)
不考慮傳回值的空間占用,隻需要常數級的空間複雜度。
三、總結
注意到對第 i+1i+1 行的計算僅用到了第 ii 行的資料,是以可以使用滾動數組的思想優化空間複雜度。