Leetcode-每日一题【剑指 Offer 13. 机器人的运动范围】

题目

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

示例 1:

输入: m = 2, n = 3, k = 1
**输出:**3

示例 2:

输入: m = 3, n = 1, k = 0
**输出:**1

提示:

  • 1 <= n,m <= 100
  • 0 <= k <= 20

解题思路

1.题目要求我们求出机器人能够到达多少个格子,对于这道题我们依旧采用深度优先搜索来解决。

2.首先定义一个m行n列的布尔类型的visited数组,用来记录每个格子是否被访问过。然后定义一个dfs方法,用来进行深度优先搜索。在搜索过程中,如果当前格子的行或列小于0,或者大于等于m或n,或者当前格子已经被访问过,或者当前格子的数字之和大于k,则返回0。否则,将当前格子标记为已访问,并返回1加上向右、向下、向左、向上四个方向的dfs调用结果之和。

3.再定义一个sum方法,用来计算一个数字的每一位之和。首先定义一个res变量,并将其初始化为0。然后判断x是否为0,如果不为0,则将res加上x的个位数,并将x除以10。最后返回res。

4.在movingCount方法中,首先初始化类成员变量m、n和k,并创建一个m行n列的visited数组。然后调用dfs方法,从矩阵的左上角开始搜索,并返回结果。

代码实现

java 复制代码
class Solution {
    int m;
    int n;
    int k;
    boolean[][] visited;
    public int movingCount(int m, int n, int k) {
        this.m = m;
        this.n = n;
        this.k = k;
        visited = new boolean[m][n];
        return dfs(0,0);
    }
    public int dfs(int i, int j){
        if(i < 0 || j < 0 || i >= m || j >= n || visited[i][j] || k<sum(i)+sum (j)){
            return 0;
        }
        visited[i][j] = true;
        return 1 + dfs(i+1,j) + dfs(i,j+1) + dfs(i-1,j) + dfs(i,j-1);

    }
    int sum(int x){
        int res = 0;
        while(x != 0){
            res = res +(x % 10);
            x = x / 10;
        }
        return res;
    }
}

测试结果

相关推荐
jvmind_dev22 分钟前
Java GC 实战指南(番外篇):被忽视的隐形杀手 —— Class Unloading 如何拖垮 GC
java·后端
可编程芯片开发24 分钟前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
An_s26 分钟前
机器学习python之识别图中物品信息
java·linux·开发语言
AI科技星33 分钟前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮37 分钟前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵
dream_home840742 分钟前
图像算法模型NPU适配与算法服务实战指南
人工智能·python·算法·npu 图像服务
AIGS0011 小时前
跨越语义鸿沟:企业本体语义平台的构建与落地
java·人工智能·python·机器学习·人工智能ai大模型应用
大鱼>1 小时前
多宠物家庭智能管理平台:云端架构与多设备协同实战
python·算法·iot·宠物
蓝田~2 小时前
大模型本地部署与远程调用 — 从 API 到 Agent
java·人工智能·claude·claude code
码农进化录2 小时前
Java 程序员的 AI 进化论 | Spring Boot 接入 OpenAI 的六个坑,全帮你踩了
java·spring boot·openai