Untitled
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; } };
Leave a Comment