Skip to content

Latest commit

 

History

History
56 lines (46 loc) · 1.34 KB

20200824-119-杨辉三角 II.md

File metadata and controls

56 lines (46 loc) · 1.34 KB

每天一道leetCode

信息卡片

给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 3
输出: [1,3,3,1]

参考答案

动态规划

很简单了

class Solution {
    public List<Integer> getRow(int rowIndex) {
        Integer[] dp = new Integer[rowIndex + 1];
        Arrays.fill(dp, 1);
        for(int i = 2; i < dp.length; i++) {
            for (int j = i - 1; j > 0; j--) {
                dp[j] = dp[j - 1] + dp[j];
            }
        }
        List<Integer> res = Arrays.asList(dp);
        return res;
    }
}

数学法

杨辉三角第n行第i列的数值为:C(n-1, i-1),其中C为组合数,则第(i+1)项是第i项的倍数=(n-i)/(i+1); 杨辉三角的其他性质可以参考这里

class Solution {
    public List<Integer> getRow(int rowIndex) {
        List<Integer> res = new ArrayList<>(rowIndex + 1);
        long cur = 1;
        for (int i = 0; i <= rowIndex; i++) {
            res.add((int) cur);
            cur = cur * (rowIndex-i)/(i+1);
        }
        return res; 
    }
}