版權聲明:轉載請聯系本人,感謝配合!本站位址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50568461
翻譯
給定一個行數字,生成它的帕斯卡三角形。
例如,給定numRows = 5,
傳回:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
原文
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]
]
分析
這道題可能我寫的太不簡潔了,不過意思算是表達清楚了。
首先定義pascal,行數小于1的話就直接傳回了。
vector<vector<int>> pascal;
if (numRows < 1) return pascal;
然後進一步操作,添加一個值為[1]的vector到pascal裡,如果行數為1此時就直接傳回了。如果不為1就繼續執行下一步。
vector<int> root;
root.push_back(1);
pascal.push_back(root);
if (numRows == 1) return pascal;
看上去和上一步差不多,不過正是借用了上一步中儲存的1,這時候root裡面已經有兩個1了。
root.push_back(1);
pascal.push_back(root);
if (numRows == 2) return pascal;
因為我主要是隻想操作第n行的中間數字,開頭和結尾直接設定成1了。中間部分的話利用上一行的資料來生成就好了。
if (numRows > 2) {
for (int i = 2; i < numRows; ++i) {
vector<int> temp;
temp.push_back(1);
for (int j = 1; j < pascal[i - 1].size(); ++j) {
temp.push_back(pascal[i - 1][j - 1] + pascal[i - 1][j]);
}
temp.push_back(1);
pascal.push_back(temp);
}
return pascal;
}
剛才複制代碼的時候發現我沒去LeetCode送出,突然有點慌上面直接寫的代碼會不會有錯,結果一送出還對了。
代碼
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> pascal;
if (numRows < 1) return pascal;
vector<int> root;
root.push_back(1);
pascal.push_back(root);
if (numRows == 1) return pascal;
root.push_back(1);
pascal.push_back(root);
if (numRows == 2) return pascal;
if (numRows > 2) {
for (int i = 2; i < numRows; ++i) {
vector<int> temp;
temp.push_back(1);
for (int j = 1; j < pascal[i - 1].size(); ++j) {
temp.push_back(pascal[i - 1][j - 1] + pascal[i - 1][j]);
}
temp.push_back(1);
pascal.push_back(temp);
}
return pascal;
}
}
};
Java, updated at 2016/8/26
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> pascal = new ArrayList<List<Integer>>();
ArrayList<Integer> row = new ArrayList<Integer>();
for (int i = 0; i < numRows; i++) {
row.add(0, 1);
for (int j = 1; j < row.size() - 1; j++)
row.set(j, row.get(j) + row.get(j + 1));
pascal.add(new ArrayList<Integer>(row));
}
return pascal;
}
}