链接:https://oj.leetcode.com/problems/pascals-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] ]
解法:
很简单,直接代码:
vector<vector<int> > generate(int numRows) {
if(numRows <= 0) return vector<vector<int>>();
vector<vector<int>> result;
result.push_back(vector<int>(1, 1));
for(int i=1; i < numRows; ++i)
{
vector<int> subV(i+1, 1);
for(int j = 1; j < i; ++j)
subV[j] = result[i-1][j-1] + result[i-1][j];
result.push_back(subV);
}
return result;
}
Pascal's Triangle II
链接:https://oj.leetcode.com/problems/pascals-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?
解法:
很简单,注意k = 3 ,输出的应该给上题中的i = 4的情况。
代码如下:
vector<int> getRow(int rowIndex) {
if( rowIndex < 0) return vector<int>();
vector<int> result(rowIndex+1, 1);
for(int i=1; i <= rowIndex; ++i)
{
int pre = result[0];
for(int j=1; j < i; ++j)
{
int temp = result[j];
result[j] += pre;
pre = temp;
}
}
return result;
}