118. Pascal's Triangle

https://leetcode.com/problems/pascals-triangle/description/

思路:先写好base case,也就是杨辉三角的前两行。然后从第2 行开始递推第3 行。往后的每一行都由前一行推出。

知道第n 行求n+1 行很简单,首先开头都是1,然后从0 开始遍历第n 行,每两个第n 行的元素相加生成n+1 行的一个元素。

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> rows;
        vector<int> first{1};
        vector<int> second{1, 1};
        if (numRows <= 0) return rows;
        rows.push_back(first);
        if (numRows == 1) return rows;
        rows.push_back(second);
        if (numRows < 3) return rows;
        
        vector<int> row;
        for (int i = 2; i < numRows; i++) {
            vector<int> &prev = rows[i-1];
            row.push_back(1);
            for (int j = 0; j < prev.size()-1; j++) {
                row.push_back(prev[j]+prev[j+1]);
            }
            row.push_back(1);
            rows.push_back(row);
            row.clear();
        }
        return rows;
    }
};

 

posted @ 2018-10-15 10:14  Agentgamer  阅读(119)  评论(0)    收藏  举报