示例代码
class Solution {
public:
vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {
int m=mat.size(),n=mat[0].size();
vector<vector<int>> dp(m,vector<int>(n,INT_MAX-1));
//从左上到右下
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(mat[i][j]==0){
dp[i][j]=0;
}else{
if(i>0){
dp[i][j]=min(dp[i][j],dp[i-1][j]+1);
}
if(j>0){
dp[i][j]=min(dp[i][j],dp[i][j-1]+1);
}
}
}
}
//从右下到左上
for(int i=m-1;i>=0;i--){
for(int j=n-1;j>=0;j--){
if(mat[i][j]!=0){
if(i<m-1){
dp[i][j]=min(dp[i][j],dp[i+1][j]+1);
}
if(j<n-1){
dp[i][j]=min(dp[i][j],dp[i][j+1]+1);
}
}
}
}
return dp;
}
};
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
效果展示