[LeetCode] #118 Pascal's Triangle 解題

題目連結

題型解說

這是一題難度為簡單的題目

需要設計一個方法,此方法會傳入一個整數 numRows

回傳一個與 numRows 相同層數的巴斯卡三角形

解題思路

這一題看一下官方給的示意圖就大概知道怎麼寫了

除了第一個及最後一個元素都是 1 之外

每一個元素(j)的值都是上一層(i - 1)(j) + (i - 1)(j - 1)

程式碼

Java

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