2022-03-11 「119. 杨辉三角 II」

今日简单题(差点做不出来):https://leetcode-cn.com/problems/pascals-triangle-ii/

先说思路,第一反应还是递归,确定第rowIndex行每个元素的值,然后把公式写出来。
这里题解说得比较明确了:


杨辉三角-递推

但是这么算的时间复杂度太高了,所以我直接参考了题解的进阶答案:


线性递推

可以看到公示中的n是rowIndex,m是在rowIndex行的某个元素下标。

这个方法需要一定的数学推导,在不依赖其他行的情况下,自己把一行元素的计算规律摸出来,还是挺有意思的。
另外要注意的是,i的范围是[1, rowIndex],不要从0开始。

class Solution {
    public List getRow(int rowIndex) {
        List row = new ArrayList();
        row.add(1);
        for (int i=1;i<=rowIndex;i++) {
            row.add((int)((long)row.get(i-1)*(rowIndex-i+1)/i));
        }
        return row;
    }
}

你可能感兴趣的:(2022-03-11 「119. 杨辉三角 II」)