LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
翻譯
給定一個(gè)行數(shù)字,生成它的帕斯卡三角形。例如,給定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] ]分析
這道題可能我寫的太不簡(jiǎn)潔了,不過意思算是表達(dá)清楚了。
首先定義pascal,行數(shù)小于1的話就直接返回了。
vector<vector<int>> pascal; if (numRows < 1) return pascal;然后進(jìn)一步操作,添加一個(gè)值為[1]的vector到pascal里,如果行數(shù)為1此時(shí)就直接返回了。如果不為1就繼續(xù)執(zhí)行下一步。
vector<int> root; root.push_back(1); pascal.push_back(root); if (numRows == 1) return pascal;看上去和上一步差不多,不過正是借用了上一步中保存的1,這時(shí)候root里面已經(jīng)有兩個(gè)1了。
root.push_back(1); pascal.push_back(root); if (numRows == 2) return pascal;因?yàn)槲抑饕侵幌氩僮鞯趎行的中間數(shù)字,開頭和結(jié)尾直接設(shè)定成1了。中間部分的話利用上一行的數(shù)據(jù)來生成就好了。
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;}剛才復(fù)制代碼的時(shí)候發(fā)現(xiàn)我沒去LeetCode提交,突然有點(diǎn)慌上面直接寫的代碼會(huì)不會(huì)有錯(cuò),結(jié)果一提交還對(duì)了。
代碼
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;} }總結(jié)
以上是生活随笔為你收集整理的LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] ubuntu上安装 ibus G
- 下一篇: 左中右抽屉