您的位置:首页 > 其它

[leetcode]-542 01 Matrix

2017-03-27 21:34 417 查看


基本思路:对每个cell,设与最近0的距离为d,按d=0~nRows+nCols进行对其附近的cell进行搜索,若搜索到0则立即返回当时的d值

d = 0 即对应自身为0的情形。

代码:

class Solution {
public:
vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {
int nRows = matrix.size();
int nCols = matrix[0].size();
vector<vector<int>> res(nRows);
for(int i = 0; i < nRows; ++ i){
res[i].resize(nCols);
}
for(int i = 0; i < nRows; ++ i){
for(int j = 0; j < nCols; ++j){
if(matrix[i][j] == 0){
res[i][j] = 0;
}else{
for(int delta = 1; delta < nRows + nCols; ++ delta){
for(int m = 0; m <= delta; ++ m){
int x1 = i - m;
int x2 = i + m;
int y1 = j - (delta - m);
int y2 = j + (delta - m);
if((x1 >= 0 && y1 >= 0 && matrix[x1][y1] == 0) ||
(x1 >= 0 && y2 < nCols && matrix[x1][y2] == 0) ||
(x2 < nRows && y1 >= 0 && matrix[x2][y1] == 0) ||
(x2 < nRows && y2 < nCols && matrix[x2][y2] == 0)){
res[i][j] = delta;
delta = nRows + nCols;
break;
}
}
}
}
}
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  01 Matrix