1. 程式人生 > >LeetCode刷題筆記(模擬):pascals-triangle

LeetCode刷題筆記(模擬):pascals-triangle

題目描述

Given numRows, generate the first numRows of Pascal’s triangle.

For example, given numRows = 5,
Return

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

給定numRows,生成帕斯卡三角形的前numRows行。

解題思路

題目比較古老,幾行程式碼就能搞定,注意一下程式碼中的邊界條件。

我感覺像下面這樣寫會更直觀一些,每一行兩頭的1我們都直接新增即可,從第三行開始,假定用res[][]表示下面各個值的位置,那麼第三行的2所在的位置就是res[2][1]。res[2][1] = res[1][1] + res[1][0],推廣之後為res[i][j] = res[i][j] + res[i][j-1],這就是中間這些數的計算公式,還是要注意邊界問題。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

C++版程式碼實現

class Solution {
public:
    vector<vector<int> > generate(int numRows) {
        vector<vector<int>> res(numRows);
        for(int i = 0; i < numRows; ++i){
            res[i].push_back(1);                                //第一個位置為1
for(int j = 1; j < i; ++j) res[i].push_back(res[i-1][j-1] + res[i-1][j]); //j從1開始,那麼只有i>=2的時候才會執行這部分 if(i > 0) res[i].push_back(1); //最後一個位置也為1,需要注意是不能再第一行中新增 } return res; } };

系列教程持續釋出中,歡迎訂閱、關注、收藏、評論、點贊哦~~( ̄▽ ̄~)~

完的汪(∪。∪)。。。zzz