Java/909. Snakes and Ladders 爬坡和梯子
阿新 • • 發佈:2018-12-11
題目
程式碼部分二(20ms)
class Solution { public int snakesAndLadders(int[][] board) { int n = board.length; int[] b = new int [n*n+1]; boolean bo = true; int x = 1; for(int i = n -1; i >= 0; i--) { if(bo) { for(int j = 0; j < n; j++) b[x++] = board[i][j]; } else { for(int j = n-1; j >= 0; j--) b[x++] = board[i][j]; } bo = !bo; } Queue<Integer> q = new ArrayDeque<>(); q.add(1); int[] d = new int[n*n+1]; Arrays.fill(d, -1); d[1] = 0; while(!q.isEmpty()) { int now = q.poll(); for(int i = 1; i<= 6; i++) { if(now + i > n*n) break; int next = now + i; if(b[next] > -1) next = b[next]; if(next == n*n) return d[now]+1; if(d[next] == -1) { q.offer(next); d[next] = d[now]+1; } } } return -1; } }