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] ]
class Solution { public: vector<vector<int> > generate(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if ( n<=0 ) return vector<vector<int> >(); vector<int> level; vector<vector<int> > ret; for(int i=1;i<=n;i++) { int k=(int)level.size(); for(int j=k-1;j>=1;j--) level[j]+=level[j-1]; level.push_back(1); ret.push_back(level); } return ret; } };
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?
class Solution { public: vector<int> getRow(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if ( n<0 ) return vector<int>(); vector<int> level; for(int i=0;i<=n;i++) { int k=(int)level.size(); for(int j=k-1;j>=1;j--) level[j]+=level[j-1]; level.push_back(1); } return level; } };