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] ] 这道题没什么好说的,注意下1是特殊情况即可,其余情况均为开头结尾数为1,中间数为上一层的两数之和class Solution { public: vector<vector<int> > generate(int numRows) { vector<vector<int> > vec; for( int i = 0;i < numRows;++i ) { vector<int> temp; int num; temp.push_back(1); for( int j = 1;j < i;++j ) { num = vec[i-1][j-1] + vec[i-1][j]; temp.push_back(num); } if( i > 0 ) temp.push_back(1); vec.push_back(temp); } return vec; } };
如果是求单行的Pascal序列,如
求第k行的Pascal序列,只使用额外的O(1)空间
class Solution { public: vector<int> getRow(int rowIndex) { vector<int> vec; vec.push_back(1); for( int i = 0;i < rowIndex;++i ) { for( vector<int>::iterator it = vec.end() - 1;it != vec.begin();--it ) *it = *it + *(it-1); vec.push_back(1); } return vec; } };
这样只使用了额外的O(1)空间