118. 楊輝三角

給定一個非負整數 numRows生成「楊輝三角」的前 numRows 行。

「楊輝三角」中,每個數是它左上方和右上方的數的和。

118. 楊輝三角,119. 楊輝三角 II_空間複雜度

 

示例 1:

輸入: numRows = 5
輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

輸入: numRows = 1
輸出: [[1]]

 

提示:

  • 1 <= numRows <= 30
class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<List<Integer>>();
        for (int i = 0; i < numRows; ++i) {
            List<Integer> row = new ArrayList<Integer>();
            for (int j = 0; j <= i; ++j) {
                if (j == 0 || j == i) {
                    row.add(1);
                } else {
                    row.add(ret.get(i - 1).get(j - 1) + ret.get(i - 1).get(j));
                }
            }
            ret.add(row);
        }
        return ret;
    }
}

119. 楊輝三角 II

給定一個非負索引 rowIndex,返回「楊輝三角」的第 rowIndex 行。

在「楊輝三角」中,每個數是它左上方和右上方的數的和。

118. 楊輝三角,119. 楊輝三角 II_楊輝三角_02

 

示例 1:

輸入: rowIndex = 3
輸出: [1,3,3,1]

示例 2:

輸入: rowIndex = 0
輸出: [1]

示例 3:

輸入: rowIndex = 1
輸出: [1,1]

 

提示:

  • 0 <= rowIndex <= 33

 

進階:

你可以優化你的算法到 O(rowIndex) 空間複雜度嗎?

class Solution {
    public List<Integer> getRow(int rowIndex) {
        List<List<Integer>> C = new ArrayList<List<Integer>>();
        for (int i = 0; i <= rowIndex; ++i) {
            List<Integer> row = new ArrayList<Integer>();
            for (int j = 0; j <= i; ++j) {
                if (j == 0 || j == i) {
                    row.add(1);
                } else {
                    row.add(C.get(i - 1).get(j - 1) + C.get(i - 1).get(j));
                }
            }
            C.add(row);
        }
        return C.get(rowIndex);
    }
}