二维数组,第一行第一列都为一
动态规划dp[i][j]=dp[i-1][j]+dp[i][j-1];
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> grand(m,vector<int>(n,1));
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
grand[i][j]=grand[i][j-1]+grand[i-1][j];
}
}
return grand[m-1][n-1];
}
};
节省空间,只用一维数组即可
下一行首先用上行数据,默认加了上一行,只需再加上左边格子的值即可
class Solution {
public:
int uniquePaths(int m, int n) {
vector<int> grand(n,1);
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
grand[j]+=grand[j-1];
}
}
return grand[n-1];
}
};