杨辉三角<利用vector创建二维数组基础语法>
利用vector创建二维数组基础语法
- 设置数组长度的默认初始
vector<vector<int>> data(N1, vector<int>(N2));
- 设置数组长度的给定初始值
vector<vector<int>> data(N1, vector<int>(N2, value));
- 直接给定数据(以初始一个2X3的数组为例)
vector<vector<int>> data={{1,2,3},{4,5,6}};
- 动态改变长度(调用vector中的resize()函数)详见代码备注
题解
- 首先确定矩阵的行数为numRows
- 再确定每一行的列数为多少
利用ans[i].resize(N)进行设置,i为行下标,N为列数
- 确定转移方程
ans[i][j]=ans[i-1][j-1]+ans[i-1][j];
详细代码
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans(numRows);//初始创建一个numRows行的数组,先不设置列数
for(int i=0; i<numRows; i++){
ans[i].resize(i+1);//重新定义每一行的列数 (i是下标,列的数量应该+1)
ans[i][0]=1;
ans[i][i]=1;
for(int j=1; j<i; j++){
ans[i][j] = ans[i-1][j-1]+ans[i-1][j];//转移方程
}
}
return ans;
}
};