119.杨辉三角 II

119. 杨辉三角 II

简单

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

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

img

示例 1:

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

示例 2:

输入: rowIndex = 0
输出: [1]

示例 3:

输入: rowIndex = 1
输出: [1,1]

提示:

  • 0 <= rowIndex <= 33

进阶:

你可以优化你的算法到 O(rowIndex) 空间复杂度吗?

题解: 使用滚动数组解决问题
i行的数据由i-1行的数据计算得到 i+1行的数据由第i行的数据计算得到
在计算第i+1行的数据时,第i-1行及以后行的数据将不会使用
我们将i+1行的数据存储在i-1行上以节省内存

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int>Temp2;
        if(rowIndex<2){//前两行特殊处理
            for(int i=0;i<=rowIndex;i++){
                Temp2.push_back(1);
            }
            return Temp2;
        }

        vector<int>Temp1={1,1};//已知行
        for(int i=1;i<rowIndex;i++){
            Temp2.clear();//将i-1行清空
            Temp2.push_back(1);//第一位的固定值
            for(int j=0;j<i;j++)
                Temp2.push_back(Temp1[j]+Temp1[j+1]);
            Temp2.push_back(1);//最后一位的固定值
            Temp1.swap(Temp2);//交换,以继续使Temp1为已知行,Temp2为待计算行
        }
        return Temp1;
    }
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Budops

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值