《剑指offer》Java版--13.机器人的运动范围(BFS)

剑指offer原题13:机器人的运动范围

地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够到达多少个格子?

LeetCode原题:https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/description/

java 复制代码
class Solution {
    public int wardrobeFinishing(int m, int n, int cnt) {
        // ps:这是力扣题目有点不一样,方向只有两个。
        int[][] dir = new int[][]{{1, 0}, {0, 1}};
        boolean[][] vis = new boolean[m][n];
        LinkedList<Pair<Integer, Integer>> queue = new LinkedList<>();
        queue.push(new Pair<>(0, 0));
        int res = 0;
        while(queue.size() > 0) {
            Pair<Integer, Integer> pair = queue.pollFirst();
            vis[pair.getKey()][pair.getValue()] = true;
            res++;
            for(int i = 0; i < 2; ++i) {
                int nextX = pair.getKey() + dir[i][0];
                int nextY = pair.getValue() + dir[i][1];
                if(nextX >= 0 && nextX < m && nextY >= 0 && nextY < n
                        && !vis[nextX][nextY]
                        && digitalSum(nextX) + digitalSum(nextY) <= cnt) {
                    queue.push(new Pair<>(nextX, nextY));
                }
            }
        }
        return res;
    }

    private int digitalSum(int x) {
        int res = 0;
        while(x > 0) {
            res += x % 10;
            x /= 10;
        }
        return res;
    }
}

时间复杂度O(NM)

空间复杂度O(NM)

相关推荐
她的男孩3 分钟前
JAR 全对仍 checksum mismatch:Forge Admin 把 Flyway 从 filesystem 改成 classpath
java·数据库·spring boot
鬼手点金5 分钟前
如何选择模型
java·前端·人工智能·git·深度学习
古法老登瞎折腾11 分钟前
大数据智能运维实战(三):实现第一个运维 MCP 工具——查询节点与组件状态
java·大数据·运维·人工智能·spring ai·mcp
小蒜学长13 分钟前
基于数据挖掘的京东商城商品推荐系统设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·推荐系统·个性化推荐
IT研究室26 分钟前
最新计算机毕业设计选题推荐-基于spring boot的医院体检管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
有同事要进步32 分钟前
Leecode第68题:x的平方根
java·数据结构·算法
摇滚侠34 分钟前
使用 VSCode 开发 Java 经验分享
java·经验分享·vscode
吹什么轩38 分钟前
linux系统复习:进程优先级与O(1)调度
java·linux·算法
古法老登瞎折腾1 小时前
大数据智能运维实战(六):任务一直在等——排查调度队列与执行资源
java·大数据·运维·spring ai·mcp
Pniubi1 小时前
HashMap扩容全流程
java·开发语言·数据结构