day71(1.30)——leetcode面试经典150

909. 蛇梯棋

909. 蛇梯棋

太破防了啊啊啊啊,我的索引++,没有--,就直接超出内存限制,真没招了,找了好久错误,太粗心了啊啊啊啊啊

题目:

题解:

java 复制代码
class Solution {
    public int snakesAndLadders(int[][] board) {
        int n = board.length;
        int target = n*n;
        //值映射坐标
        Map<Integer, int[]> map = new HashMap<>();
        int flag = 1;
        int num = 1;
        //我真服了,这个i没--,我还以为是变量名触发了什么呢
        for(int i=n-1;i>=0;i--) {
            if(flag == 1) {
                for(int j=0;j<n;j++) {
                    map.put(num++, new int[]{i,j});
                }
            }
            else {
                for(int j=n-1;j>=0;j--) {
                    map.put(num++, new int[]{i,j});
                }
            }
            flag = -flag;
        }
        Queue<Integer> queue = new LinkedList<>();
        queue.offer(1);
        //移动次数
        int step=0;
        boolean[] visited = new boolean[target + 1]; // 1-indexed
        visited[1]=true;
        while(queue.size()>0) {
            int size = queue.size();
            step++;

            for(int i=0;i<size;i++) {
                int t = queue.poll();
                int[] l = map.get(t);
                int x = l[0];
                int y = l[1];

                for(int j=t+1;j<=Math.min(target, t+6); j++) {
                    
                     int fin = j;
                    int[] li = map.get(fin);
                    int r = li[0], c = li[1];
                    
                    if (board[r][c] != -1) {
                        fin = board[r][c];
                    }
                    
                    // 如果是终点,直接返回
                    if (fin == target) {
                        return step;
                    }

                    if(visited[fin]==false) {
                        // 标记并入队
                        visited[fin] = true;
                        queue.offer(fin);
                    }
                }
            }
        }
        return -1;
    }
}
相关推荐
随便发挥21 小时前
Leetcode 剑指 Offer II 186. 文物朝代判断
leetcode
6Hzlia21 小时前
【Classic 150 刷题计划】 LeetCode 205. 同构字符串 | C++ 双向绑定与哈希表映射
c++·算法·leetcode
youyou-06061 天前
Classic AUTOSAR 中 CAN 协议栈整体架构
mcu·面试·汽车
此时不提桶,更待何时1 天前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
有点。1 天前
C++03阶段练习(练习题)
数据结构·算法·图论
周末也要写八哥1 天前
经典算法实例:游戏中弱角色的数量(二)
算法
是Yu欸1 天前
鸿蒙PC移植:2048 从网页小游戏到 AI 桌面应用
大数据·人工智能·算法·数据挖掘·openharmony·codex
鹿角片ljp1 天前
KV Cache 解析
java·算法
liliangcsdn1 天前
IVOL与偏度因子的对比测量分析
算法
threerocks1 天前
Jev 入门第一课
算法