【LeetCode】118 & 119 - Pascal's Triangle & Pascal's Triangle II
118 - Pascal's 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] ]
Solution:
class Solution { public: vector<vector<int>> generate(int numRows) { vector<vector<int>> ret; if(numRows==0)return ret; vector<int> vec(1,1); ret.push_back(vec); int i=1; while(i<numRows){ vec.clear(); vec.push_back(1); for(int j=1;j<ret[i-1].size();j++){ vec.push_back(ret[i-1][j-1]+ret[i-1][j]); } vec.push_back(1); ret.push_back(vec); i++; } return ret; } };
119 - Pascal's Triangle II
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1]
.
Note:
Could you optimize your algorithm to use only O(k) extra space?
Solution:
class Solution { public: vector<int> getRow(int rowIndex) { vector<int> vec(1,1); vector<vector<int>> ret; ret.push_back(vec); int i=1; while(i<=rowIndex){ vec.clear(); vec.push_back(1); for(int j=1;j<ret[i-1].size();j++){ vec.push_back(ret[i-1][j-1]+ret[i-1][j]); } vec.push_back(1); ret.push_back(vec); i++; } return vec; //or return ret[rowIndex]; } };