美文网首页
119. Pascal's Triangle II

119. Pascal's Triangle II

作者: exialym | 来源:发表于2016-09-21 22:48 被阅读62次

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]

相关文章

网友评论

      本文标题:119. Pascal's Triangle II

      本文链接:https://www.haomeiwen.com/subject/ffylettx.html