Untitled
unknown
plain_text
a year ago
1.2 kB
6
Indexable
class Solution {
public:
bool isValid(int i , int j , int n , int m) {
if(i >= n || j >= m || i < 0 || j < 0)return false;
return true;
}
vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {
int n = isWater.size(), m = isWater[0].size();
vector<vector<int>> ans(n, vector<int>(m, -1));
queue < pair < int , int > > q;
int dx[4] = {0 , 0, 1 , -1} , dy[4] = {1, -1, 0, 0};
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(isWater[i][j] == 1) {
q.push({i,j});
ans[i][j] = 0;
}
}
}
while(!q.empty()) {
pair < int , int > indices = q.front();
q.pop();
for(int i=0;i<4;i++) {
int nextI = indices.first + dx[i];
int nextJ = indices.second + dy[i];
if(isValid(nextI, nextJ, n , m) && ans[nextI][nextJ] == -1) {
ans[nextI][nextJ] = ans[indices.first][indices.second] + 1;
q.push({nextI, nextJ});
}
}
}
return ans;
}
};Editor is loading...
Leave a Comment