【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)
文章目录
- 题目描述
- 思路 & 代码
- 二刷
题目描述
- 注意点:满足数位和大于 k 的格子,不一定可以从 [0, 0] 走到,因此实际上不满足条件
思路 & 代码
- 考虑到可达性问题,决定用 dfs 来一个个走,不能走 or 走过了就 return
- 用辅助矩阵来判断是否走过 visited[ ][ ]
- 时空复杂度 O(n2n^2n2)、O(n2n^2n2)
class Solution {int ans = 0;boolean[][] visited;public int movingCount(int m, int n, int k) {visited = new boolean[m][n];dfs(m, n, k, 0, 0);return ans;}// 行走void dfs(int m, int n, int k, int x, int y){// 来过了就不再来咯,越界也结束咯~if(x >= m || y >= n || visited[x][y]){return;}// 可以走的话~继续往下走if(sum(x) + sum(y) <= k){ans++;visited[x][y] = true;dfs(m, n, k, x + 1, y);dfs(m, n, k, x, y + 1);} }// 数位和判断int sum(int x){int sum = 0;while(x > 0){sum += x % 10;x /= 10;}return sum;}
}
二刷
- 其实 i j 是有范围限制的,否则需要像上面的代码那样写一个数位和判断。
- 注意:从[0, 0]出发,可能有些满足 k 条件的格子其实并不能走到
class Solution {boolean[][] graph;int counts = 0;public int movingCount(int m, int n, int k) {graph = new boolean[m][n];infect(0, 0, m, n, k);return counts;}void infect(int i, int j, int m, int n, int k) {if(i < 0 || i >= m || j < 0 || j >= n || (i % 10 + i / 10 + j % 10 + j / 10) > k || graph[i][j]) {return;}graph[i][j] = true;counts++;infect(i + 1, j, m, n, k);infect(i, j + 1, m, n, k);}
}
【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)相关推荐
- 【LeetCode】剑指 Offer 13. 机器人的运动范围
[LeetCode]剑指 Offer 13. 机器人的运动范围 文章目录 [LeetCode]剑指 Offer 13. 机器人的运动范围 package offer;public class Solu ...
- Leetcode刷题笔记——剑指 Offer 13. 机器人的运动范围(中等)
文章目录 题目描述 解题思路 方法一:深度优先遍历DFS 复杂度分析 C++代码实现 方法二:广度优先遍历BFS 复杂度分析 C++代码实现 参考连接 题目描述 地上有一个m行n列的方格,从坐标 [0 ...
- 每日一道Leetcode - 剑指 Offer 13. 机器人的运动范围【DFS|BFS】
DFS: Python版本 class Solution:def movingCount(self, m: int, n: int, k: int) -> int:def dfs(i,j,si, ...
- LeetCode 剑指Offer 13 机器人的运动范围
LeetCode 剑指Offer 13 机器人的运动范围 题目 解题 解题一:深度优先搜索 解题二:广度优先搜索 解题三:动态规划 题目 解题 深度优先和广度优先解题思路参考: 剑指 Offer 13 ...
- 剑指 Offer 13. 机器人的运动范围
剑指 Offer 13. 机器人的运动范围 题目 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上 ...
- [[EVD]] - 剑指 Offer 13. 机器人的运动范围
题目分析:[[EVD]] - 剑指 Offer 13. 机器人的运动范围https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-l ...
- 【四重优化,速看】剑指 Offer 13. 机器人的运动范围
立志用最少的代码做最高效的表达 题目 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不 ...
- Leetcode 剑指 Offer 13. 机器人的运动范围 (每日一题 20210906)
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不能移动到方格外),也不能进入行坐标和列 ...
- 剑指 Offer 13. 机器人的运动范围 【重刷】
文章目录 1.概述 2. 代码 1.概述 题目:https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/ 地上有一个m行 ...
- 35. (★DFS)剑指 Offer 13. 机器人的运动范围
题目描述: 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不能移动到方格外),也不能进 ...
最新文章
- 运用双腾讯云搭建《饥荒》多人联机服务器
- 【Clickhouse】rsyslog服务器使用clickhouse列数据库存储日志
- oracle constraint_type 问题
- It is indirectly referenced from required .class file
- 埃及分数问题——迭代加深搜索
- JS复制内容到剪贴板
- CentOS 6.5通过ifconfig命令看不到网卡IP地址的解决方法
- React类里面能写的东西
- 电视机原理图_电工电气,如何看电气原理图和接线图,如何设计图纸?
- python网页爬虫循环获取_Python 爬虫第三篇(循环爬取多个网页)
- 火爆GitHub!3.2k Star的可视化神器开源!
- 一点总结,手机应用开发前景
- 物体检测object detection object recognition和coco数据集 动手学深度学习v2 pytorch
- 电磁流量计 ADMAG AXG系列
- java 修改request中的参数_springcloud 中 zuul 修改请求参数信息的方法
- 三维激光扫描在堆体体积测算中的应用
- 记一段随风而逝的感情
- 人工智能机器学习入门资料免费送
- 020.验证二叉搜索树
- 爬山的蜗牛旅程:java内存结构
热门文章
- CSMA/CD协议分析笔记
- centos php日志分析,记录一下CentOS7安装GoAccess日志分析工具
- java搭建线程池框架,JAVA线程池管理及分布式HADOOP调度框架搭建
- 苹果html抓包,苹果被开发者“抓包”违反了自己定的规则
- oracle怎么把整形,【用bbed工具对Oracle进行微整形】
- java官方 jax rs_jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档
- mysql约束_不是吧,阿Sir,MySQL约束你竟然还不懂!
- 服务器物品展示框刷物品,我的世界1period;11period;2展示框刷物品bug | 手游网游页游攻略大全...
- HTTP状态码表格汇总
- Spring Data JPA 从入门到精通~Auditing及其事件详解