给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
思路:
把两个1作为边界,使用队列完成
/**
* @param {number} rowIndex
* @return {number[]}
*/
var getRow = function(rowIndex) {
if(rowIndex==0){return [1];}
if(rowIndex==1){return[1,1];}
var tt=[1,1];
var flag=0;
var maxcount=3;
var count=0;
while(rowIndex-2>=0){
if(tt[0]!=1){
var dm=tt.shift();
tt.push(dm+tt[0]);
count++;
}
//末尾
else if(tt[0]==1&&count==maxcount){
rowIndex--;
tt.push(tt.shift());
flag=0;
count=0;
maxcount++;
//新的一行
}else if(tt[0]==1){
flag++;
tt.push(tt.shift());
tt.push(1+tt[0]);
count+=3;
}
}
return tt;
};