【题目】 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 【示例】 输入: 3 输出: [1,3,3,1] 【进阶】 你可以优化你的算法到 O(k) 空间复杂度吗? 【代码】
class Solution { public: vector<int> getRow(int rowIndex) { vector<int> pre(1,1); if(rowIndex==0) return pre; for(int i=1;i<=rowIndex;i++){ vector<int> rs(1,1); for(int j=1;j<i;j++){ rs.push_back(pre[j-1]+pre[j]); } rs.push_back(1); pre=rs; } return pre; } };【改进】公式法
class Solution { public: vector<int> getRow(int rowIndex) { rowIndex++; int up=1,down=1; vector<int> rs(1,1); for(int i=1;i<rowIndex-1;i++){ up*=(rowIndex-i); down*=i; rs.push_back(up/down); } rs.push_back(1); return rs; } };