LeetCode刷題筆記(模擬):pascals-triangle
阿新 • • 發佈:2019-02-15
題目描述
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