119. Pascal's Triangle II

Given an index k, return the kth row of the Pascal's triangle.

For example, given k = 3,
Return [1,3,3,1].

Note:
Could you optimize your algorithm to use only O(k) extra space?

如果像之前那样采用使用上一行直接生成下一行的办法:

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    if (rowIndex===0) 
        return [1];
    if (rowIndex===1)
        return [1,1];
    var pre = [1,1];
    var now = [];
    for (var i =2; i <= rowIndex; i++) {
        now[0]=1;
        for (var j = 1;j<i;j++) {
            now[j] = pre[j-1] + pre[j];
        }
        now[i] = 1;
        pre = now;
        now = [];
    }
    return pre;
};

这种办法并不满足O(k)的空间要求,因为要同时保存2行的信息。
那么就要寻找一种直接在行内生成下一行的办法:

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    var row = [];
    row[0] = 1;
    for (var k =1;k<rowIndex+1;k++) {
        row[k] = 0;
    }
    for(var i=1; i<row.length; i++) {
        for(var j=i; j>=1; j--) {
            row[j] += row[j-1];
        }
    }
    return row;
};

我们创建一个元素数量与最后结果相同的数组,假设参数为4:
[1,0,0,0,0]
从最后一个元素开始,本元素等于本元素和前一个相加,
[1,1,0,0,0]
[1,2,1,0,0]
[1,3,3,1,0]
[1,4,6,4,1]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容