pascal’s triangle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector <vector<int>> arr(numRows);
for(int i = 0;i<numRows;i++){
arr[i].resize(i+1);
arr[i][0]= arr[i][i]=1;
for(int m = 1;m<i;m++){
arr[i][m] = arr[i-1][m-1]+arr[i-1][m];
}
}
return arr;
}
};
  • 注意点:vector创建二维数组的时候, vector > arr(numRows); arr后面一定要加上长度,用小括号扩起。
  • 递归法会超时,所以考虑其他方法。从后往前遍历
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class Solution {
    public:
    vector<int> getRow(int rowIndex) {
    vector<int> arr;
    arr.resize(rowIndex+1);
    arr[0]=1;
    if(rowIndex == 0){
    return arr ;
    }
    for(int i=0;i<rowIndex;i++){
    arr[rowIndex]=1;
    for(int k = rowIndex-1; k > 0; --k){
    arr[k] = arr[k] + arr[k-1];
    }
    arr[0]=1;
    }
    return arr;
    }
    };