当前位置: 首页 > news >正文

主页面设计seo优化运营专员

主页面设计,seo优化运营专员,深圳商业网站建设案例,分销商城解决方案题目链接:https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/ 1. 题目介绍(13. 机器人的运动范围) 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动&#xff0…

题目链接:https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/

1. 题目介绍(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

2. 题解

2.1 回溯(DFS+剪枝)-- O(mn)

时间复杂度O(mn),空间复杂度O(mn)
在这里插入图片描述

  • 深度优先搜索: 可以理解为暴力法模拟机器人在矩阵中的所有路径。DFS 通过递归,先朝一个方向搜到底,再回溯至上个节点,沿另一个方向搜索,以此类推,过程如上图所示。
  • 剪枝: 在搜索中,遇到数位和超出目标值、此元素已访问,则应立即返回,称之为 可行性剪枝 。
class Solution {// 1. 从[0,0]位置起始出发// 2. 向方格四面八方判断// 3. 统计机器人可到达的格子总数public int movingCount(int m, int n, int k) {// 错误判断if (m <= 0 || n <= 0 || k < 0) return 0;// 辅助数组:用来标记当前格子是否被访问过boolean[][] visited = new boolean[m][n];// 从(0,0)开始出发return dfs(0,0,m,n,k,visited);}public int dfs(int i, int j, int m, int n, int k, boolean[][] visited) {// 递归终止条件:错误判断if(i >= m || j >= n || k <getDigitSum(i) + getDigitSum(j) || visited[i][j]) return 0;// 该位置通过了错误判断,说明该方格属于机器人可达visited[i][j] = true;// 当前格 + 往下走 + 往右走,因为是0出发,不是从任意点出发,所以这里就不需要从四个方向都进行相加return 1 + dfs(i + 1, j, m, n, k, visited) + dfs(i, j + 1, m, n, k, visited);}// 求一个非负整数的数位之和public int getDigitSum(int number){int sum = 0;while (number > 0){sum += number % 10;number = number/10;}return sum;}}

在这里插入图片描述

2.2 BFS – O(mn)

时间复杂度O(mn),空间复杂度O(mn)
在这里插入图片描述

class Solution {public int movingCount(int m, int n, int k) {boolean[][] visited = new boolean[m][n];int res = 0;Queue<int[]> queue= new LinkedList<int[]>();queue.add(new int[] { 0, 0, 0, 0 });while(queue.size() > 0) {int[] x = queue.poll();int i = x[0], j = x[1], si = x[2], sj = x[3];if(i >= m || j >= n || k < si + sj || visited[i][j]) continue;visited[i][j] = true;res ++;queue.add(new int[] { i + 1, j, (i + 1) % 10 != 0 ? si + 1 : si - 8, sj });queue.add(new int[] { i, j + 1, si, (j + 1) % 10 != 0 ? sj + 1 : sj - 8 });}return res;}
}

3. 参考资料

[1] 剑指 Offer 13. 机器人的运动范围( 回溯算法,DFS / BFS ,清晰图解)-- 图片与BFS解法来源
[2] 剑指offer面试题13:机器人的运动范围的Java解法 – DFS/BFS基础
[3] 【LeetCode】剑指 Offer 12. 矩阵中的路径 p89 – Java Version – 相似题目

http://www.yayakq.cn/news/746750/

相关文章:

  • 怎么给网站做404界面义乌婚介网站建设
  • 代理网站地址广州做网站系统
  • 建设政协网站的意义wordpress中国可以用吗
  • 网站建设html代码社区推广
  • 安徽专业网站建设营销推广方式都有哪些
  • 珠宝商城网站模板网站建设区别
  • 做网站公司简介模版亚马逊雨林有人类居住吗
  • 游戏网站建设一条龙企业网站内容如何搭建
  • 网站托管服务器html制作一个简单美食网页
  • 长春公司建站模板网站开发公司模板
  • 设计网站开发方案流程wordpress like
  • 网站改版301设置wordpress算数的插件
  • 网站建设哪家较好网络品牌推广
  • 网站开发与设计 信科中学网站源码
  • 网站建设哈尔滨网站优化4PHP网站开发与管理设计心得
  • 做网站除了dw企业网站建设代理加盟
  • 网站建设策划方案书下载延边网站开发depawo
  • 做金融在那个网站上找工作合肥专业做网站建设内容
  • 织梦做的网站怎么添加关键词做网站需要什么服务器配置
  • 深圳做公司网站美容院网站制作
  • 企业做网站400电话作用徐州网站的优化
  • 响应式网站建设过时吗网站建设创新互联公司
  • 网站上的流动图片怎么做的电影网站模板源代码
  • 织梦网站为什么容易被注入西部数码网站打不开
  • 阜阳做网站的公司标记位置的地图微信小程序开发教程
  • 福建省城乡和住房建设厅网站2017设计工作室做网站
  • 建网站 域名wordpress 清空 demo
  • 怎么增加网站收录郑州网页设计公司有哪些
  • 安丘网站建设制作做微商加入什么移动电商网站
  • 企业手机端网站模板二手车网站建站