62.不同路径
1.二维动态数组初始化:
vector<vector> dp(m, vector(n, 0));
2.怎么简化为一维数组?滚动数组,理解不了
63. 不同路径 II
1.因为有了障碍,(i, j)如果就是障碍的话应该就保持初始状态(初始状态为0)。
2.小细节,例如:初始化的部分,很容易忽略了障碍之后应该都是0的情况。
3. int m = obstacleGrid.size();
int n = obstacleGrid[0].size();
简化版本:
错误写法:
for(int i = 1;i < m;i++){
for(int j = 1;j < n;j++){
if(obstacleGrid[i][j] == 1){
dp[j] = 0;
}else{
dp[j] += dp[j-1];
}
}
}
正确写法:
for (int i = 1; i < obstacleGrid.size(); ++i)
for (int j = 0; j < dp.size(); ++j){
if (obstacleGrid[i][j] == 1)
dp[j] = 0;
else if (j != 0)
dp[j] = dp[j] + dp[j-1];
}
错误之处:
按上面那种写法会漏掉在obstacleGrid[i][0]上有障碍的情况,会漏掉那一列的初始化