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]
]
这个问题比较简单,大家的解法大同小异。时间复杂度都是O(N2);
vector<vector<int> > generate(int numRows) {
vector<vector<int> > triangle;
if (numRows == 0) return triangle;
vector<int> row;
row.push_back(1);
triangle.push_back(row);
for (int i = 1; i < numRows; ++i)
{
row.clear();
row.push_back(1);
for (int j = 1; j < triangle[i - 1].size(); j++)
row.push_back(triangle[i - 1][j - 1] + triangle[i - 1][j]);
row.push_back(1);
triangle.push_back(row);
}
return triangle;
}
Dicuss上下面的解法稍显简洁:
vector<vector<int> > generate(int numRows) {
vector<vector<int> > result;
if (numRows == 0) return result;
for(int i = 0; i < numRows; ++i) {
vector<int> row(i + 1);
row[0] = row[i] = 1;
for(int j = 1; j < i; j++)
row[j] = result[i - 1][j - 1] + result[i - 1][j];
result.push_back(row);
}
}