力扣119題:楊輝三角Ⅱ
阿新 • • 發佈:2021-02-02
技術標籤:力扣演算法題演算法javaleetcode資料結構陣列
給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。進階:你可以優化你的演算法到 O(k) 空間複雜度嗎?
示例:
輸入: 3
輸出: [1,3,3,1]
這個題力扣給的難度是簡單。
當然如果不用優化到O(k)的話,這個題可以直接套用118題的板子再來一遍就可以了,但是因為空間複雜度受到限制,就需要想一種更好一點的演算法。
演算法思路:看到這個題的時候我是懵的,因為我不知道如何才能把它優化到O(k),然後經過評論區一番遨遊之後發現出現了一種新的思路(當然有大神去打表…不過我覺得沒有必要,因為刷題是為了學習新的演算法思路,而不是為了刷題而刷題)。就是通過定義一個rowIndex大小的陣列來存放資料,然後再從上往下的去更改陣列中的資料,通過迭代來更新下一行。
原始碼:
class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[] num = new Integer[rowIndex+1];
for (int i = 0; i <= rowIndex; i++) {
for (int j = i; j >= 0; j--) {
if (j == 0 || j == i)
num[j] = 1;
else
//這個地方實現了迭代,每一次更新num[j]的時候都會由上一行的資料來更新
num[j] = num[j] + num[j - 1];
}
}
List<Integer> list = Arrays.asList(num);
return list;
}
}
執行用時:
1 ms ,在所有 Java 提交中擊敗了81.56%的使用者
記憶體消耗:
36 MB, 在所有 Java 提交中擊敗了85.12%的使用者