首页 > 代码库 > [LeetCode] Pascal's Triangle

[LeetCode] 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]]



还是easy题适合我,略作思考以后基本第一次就能AC。凡是遇到这种有递推性质的题目,一般的思路就是自底向上一步一步推出来,推到输入限制时返回就行了,这里有几个pascale三角的性质需要注意一下:
1.第n层有n个元素。
2.除了首位各一个1以外,其n-2个元素都满足 c[n] = p[n-1]+p[n],其中c是当前层,p是上一层。
3.第一层为{1}
理解了这三个性质,再加上递推的思想就可以写出来了。
void pascalIter(int i, int n, vector<vector<int>> &ret) {    if (i > n) return;    vector<int>r;    r.push_back(1);    vector<int> t = ret[i-2];    for (int k = 0; k < i-2; k++) {        r.push_back(t[k] + t[k+1]);    }    r.push_back(1);    ret.push_back(r);    pascalIter(i+1, n, ret);}vector<vector<int> > generate(int numRows) {    vector<vector<int>> ret;    if (numRows < 1) return ret;        ret.push_back({1});    if (numRows == 1) return ret;        pascalIter(2, numRows, ret);    return ret;}

 

 

[LeetCode] Pascal's Triangle