LeetCode Pascal's Triangle II

本文介绍了一种高效计算杨辉三角(Pascal三角)第K行的方法。通过使用一个向量并从尾部向前计算下一行的数值,实现对指定行的快速获取。适用于数学算法及编程学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

For example, given k = 3,

Return [1,3,3,1].

Pascal三角形也叫杨辉三角形。杨辉三角形按如下性质进行排列:

               1
                         1   1   
                       1   2   1   
                     1   3   3   1   
                   1   4   6   4   1   
                 1   5   10  10  5   1   
               1   6   15  20  15  6   1   
             1   7   21  35  35  21  7   1   
           1   8   28  56  70  56  28  8   1   
         1   9   36  84  126 126 84  36  9   1   
       1   10  45  120 210 252 210 120 45  10  1   
     1   11  55  165 330 462 462 330 165 55  11  1    
   1   12  66  220 495 792 924 792 495 220 66  12  1
...

该题目的是求Pascal三角形的第k行。采用从vector尾部往前计算下一行的数值。

假设k=3,申请k+1个空间

第一行,j和tmp指向最后一个元素,不做任何操作,tmp - 1。


第二行 j指向tmp指向的元素,计算第二行1后面的第一个元素 pascal[j]+pascal[j-1]j-1。当j指向最后一个元素时,结束前面的加法操作,tmp-1



第三行重复上述操作,直到j指向最后一个元素。

完整代码如下

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int> pascal(rowIndex+1, 1);
        int i, j, tmp = rowIndex;
        for (i = 0; i < rowIndex; ++i) {
            for (j = tmp; j < rowIndex; ++j) {
                pascal[j] = pascal[j] + pascal[j + 1];
            }
            --tmp;
        }
        return pascal;
    }
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值