1. 程式人生 > 其它 >力扣119題:楊輝三角Ⅱ

力扣119題:楊輝三角Ⅱ

技術標籤:力扣演算法題演算法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%的使用者