class Solution { public int swimInWater(int[][] grid) { Queue<Data> q = new PriorityQueue<>((a,b)-> Integer.compare(a.t, b.t)); q.add(new Data(0,0,grid[0][0])); int dirs[][] = {{0,1},{1,0},{0,-1},{-1,0}}; int visited[][] = new int[grid.length][grid[0].length]; while(!q.isEmpty()){ Data d = q.remove(); if(d.i == grid.length-1 && d.j == grid[0].length-1) { return d.t; } for(int dir[] : dirs){ int i = dir[0] + d.i; int j = dir[1] + d.j; if(i>=0 && i< grid.length && j>=0 && j<grid[0].length && visited[i][j]==0 ){ visited[i][j] = 1; q.add(new Data(i,j, Math.max(d.t, grid[i][j]))); } } } return -1; } } class Data{ int i; int j; int t; public Data(int i, int j, int t){ this.i =i; this.j = j; this.t = t; } } For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)