LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
翻譯
給定一個行數字,生成它的帕斯卡三角形。例如,給定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;} }總結
以上是生活随笔為你收集整理的LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] ubuntu上安装 ibus G
- 下一篇: 左中右抽屉