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; } };