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;
    }
}
相关推荐
dialect_5 小时前
KMP算法
开发语言·c++·算法
reikocao5 小时前
卡尔曼滤波的动态机制:P如何改变融合权重
算法
漂流瓶jz5 小时前
UVA-1612 猜名次 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·题解·排序·aoapc·算法竞赛入门经典
夕除6 小时前
Redis 过期策略
redis·笔记·面试
吞下星星的少年·-·6 小时前
Div.2 CF 1130B题(构造,贪心)
算法·贪心·构造
文丑颜不良啊6 小时前
LeetCode1481~1500题目解析
java·leetcode
文丑颜不良啊7 小时前
LeetCode1381~1400题目解析
java·leetcode
是main不是漫7 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
深圳市快瞳科技有限公司8 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
时间的拾荒人9 小时前
CMake 常用命令详解:从版本声明到安装部署
c++·面试