首页 > 其他分享 >力扣---面试题13. 机器人的运动范围

力扣---面试题13. 机器人的运动范围

时间:2023-04-02 19:34:28浏览次数:42  
标签:bfs 面试题 return arr int res 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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

断断续续也算是两百多道题了,感觉进步还是蛮大的。

class Solution {
    public int movingCount(int m, int n, int k) {
        boolean[][] arr = new boolean[m][n];
        return bfs(arr, 0, 0, 0, k);
    }
    private int bfs(boolean[][] arr, int res, int i, int j, int k) {
        // 先处理越界问题,然后判断是否已经到达过该点,再判断行坐标和列坐标的位数和是否大于 k
        if (i < 0 || i >= arr.length || j < 0 || j >= arr[0].length || arr[i][j] || judge(i, j, k)) {
            return res;
        } else {
            res ++;
            arr[i][j] = true;
        }
        // 由于此题求得是所有能到达的格子,所以不需要对辅助数组进行还原操作。
        res = bfs(arr, res, i - 1, j, k);
        res = bfs(arr, res, i + 1, j, k);
        res = bfs(arr, res, i, j - 1, k);
        res = bfs(arr, res, i, j + 1, k);
        return res;
    }
    // 判断行坐标和列坐标的位数和是否大于k
    private boolean judge(int i, int j, int k) {
        int sum = 0;
        while (i > 0) {
            sum += i % 10;
            i /= 10;
        }
        while (j > 0) {
            sum += j % 10;
            j /= 10;
        }
        return sum > k;
    }
}

 

标签:bfs,面试题,return,arr,int,res,13,---,坐标
From: https://www.cnblogs.com/allWu/p/17281063.html

相关文章

  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)- Make It Permutation
    题目链接:Problem-C-Codeforces  #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;#defineendl"\n"intmain(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);intT=1;cin>>T;while(......
  • JVM系统优化实践(13):GC动手实践
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~上一次留了个小尾巴:怎么以通过代码模拟对象年龄在15岁之后才进入老年代呢?自己试着实现了一下。首先需要设置好相关的JVM环境:-XX:InitialHeapSize=104857600-XX:MaxHeapSize=104857600-XX:NewSize=20971520-XX:MaxNewSize=209715......
  • 利民(Thermalright)HR-10 2280 固态硬盘SSD散热器 - 我的硬件配置
    ......
  • java -- static, 内部类, 权限, 参数传递
    static关键字static是静态修饰符,一般修饰成员。被static修饰的成员属于类,不属于单个这个类的某个对象。static修饰的成员被多个对象共享。static修饰的成员属于类,但是会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。static特点被static修饰的成员变量属于类,不......
  • 阅读-《这才是心理学》
    第一章1.什么是心理学?心理学是用来预测和分析、控制人的行为。能够更好的理解、预测别人的行为背后的原因,旨在将人的固有观念放置于科学检验之下2.心理学的用处心理学不光是学习其理论知识,更是挖掘其背后的本质学习其批判性的思维,帮助我们用于分辨各种知识主张现代心......
  • 类加载机制-打破双亲委派机制
     1.什么是双亲委派机制双亲委派机制是Java类加载器的一种工作机制,它的主要思想是:如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把这个请求委托给父类加载器去完成。如果父类加载器还存在父类加载器,则进一步向上委托,依次递归,直到委托到最顶层的启动类加......
  • CentOS7-启动|重启|停止|状态服务脚本
    源码编译安装方法1、上传包nginx-1.10.0.tar.gz至服务端#解压到工作目录[root@template~]#tarxfnginx-1.10.0.tar.gz-C/usr/local/src/#切换至Nginx目录下,找到configure[root@template~]#cd/usr/local/src/[root@templatesrc]#lltotal0drwxr-xr-x.81001......
  • 有关哈希表简单的散列函数实现-Java实现
    其实现不难,所以直接贴代码:1packagedataSrtuct;23importjava.util.ArrayList;4importjava.util.LinkedList;56publicclassHashTab{7publicstaticvoidmain(String[]args){8hashTablehashT=newhashTable(10);9......
  • AtCoder Beginner Contest 296 A-E
    AtCoderBeginnerContest296A-Alternately1voidsolve(){2intn=read();3strings;4cin>>s;5intans=1;6for(inti=0;i<s.size()-1;i++){7if(s[i]==s[i+1])ans=0;8}9puts(ans>0?"Yes&......
  • dev-tools
    Maven配置依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>作用项目或者页......