题解 | 杨辉三角-ii
杨辉三角-ii
https://www.nowcoder.com/practice/a60ee4a1c8a04c3a93f1de3cf9c16f19
//杨辉三角单行,时间复杂度O(n); // class Solution { // public: // /** // * // * @param rowIndex int整型 // * @return int整型vector // */ // vector<int> getRow(int rowIndex) { // // write code here // vector<int> result; // for (int i = 0; i <= rowIndex; i++) { // long int res = combination(rowIndex,i); // result.push_back(res); // } // return result; // } // long int combination(int x,int y){ // long int num_1 = 1; // if(y == 0){ // return num_1; // } // for(int i=1;i<=y;i++){ // num_1 = num_1 * (x - i +1) / i; // } // return num_1; // } // }; // //合理规划dp转移方向降低一个维度 // class Solution { // public: // vector<int> getRow(int rowIndex) { // vector<int> dp(rowIndex+1,0); // dp[0]=1; // for(int i=1;i<=rowIndex;i++) // for(int j=i;j>=1;j--) // dp[j]+=dp[j-1]; // return dp; // } // }; #include <vector> using namespace std; class Solution { public: vector<int> getRow(int rowIndex) { vector<int> result(rowIndex + 1, 1); // 初始化结果为全 1 long prev = 1; // 用于存储 C(rowIndex, i-1) 的值 for (int i = 1; i <= rowIndex; i++) { prev = prev * (rowIndex - i + 1) / i; // 递推计算 C(rowIndex, i) result[i] = (int)prev; } return result; } };