【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);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业大学排名_U.S.News全美大学排名出炉:UCLA超越伯克利;计算机MIT排第一,斯坦福跌出前四...

栗子 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI一年一度&#xff0c;USNews2020美国大学排名公布。前两位依然稳定&#xff0c;普林斯顿第一&#xff0c;哈佛第二。后面开始就有了变化&#xff0c;今年有三所学校并列第三&#xff1a;哥伦比亚大学、麻省理工学院 (MIT) 以…

【LeetCode笔记】剑指 Offer 15-. 二进制中1的个数 (Java、位运算)

文章目录题目描述思路 & 代码二刷题目描述 涉及二进制&#xff0c;位运算跑不了&#xff5e; 思路 & 代码 既然是32位&#xff0c;那么通过一次遍历&#xff0c;每次判断一个位是否为1即可 public class Solution {// you need to treat n as an unsigned valuepu…

apollo 配置中心_.NET Core 下使用 Apollo 配置中心

“Apollo(阿波罗)是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适用于微服务配置管理场景。服务端基于Spring Boot和Spr…

【LeetCode笔记】剑指 Offer 21-. 调整数组顺序使奇数位于偶数前面(Java、双指针)

文章目录题目描述思路 & 代码二刷题目描述 有点像快排的交换操作 思路 & 代码 类似快排中的找法&#xff0c;具体见代码注释 class Solution {public int[] exchange(int[] nums) {// 双指针啦&#xff5e;int left 0, right nums.length - 1;while(left < r…

【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)

文章目录题目描述思路 & 代码二刷题目描述 思路很值得看的一道题&#xff0c;和之前路径总和 III的双递归思路、结构很像 思路 & 代码 isSubStructrue() 进行一个前序的遍历&#xff1b;通过 || 运算符&#xff0c;在找到时直接终止遍历具体函数功能、思路见代码注…

python使用pip安装包_12.2.1 使用pip安装Python包

12.2.1 使用pip安装Python包 大多数较新的Python版本都自带pip&#xff0c;因此首先可检查系统是否已经安装了pip。在Python 3中&#xff0c;pip有时被称为pip3。 1. 在Linux和OS X系统中检查是否安装了pip 打开一个终端窗口&#xff0c;并执行如下命令&#xff1a; $ pip --v…

【LeetCode笔记】剑指 Offer 61-. 扑克牌中的顺子 (Java、哈希表)

文章目录题目描述思路 & 代码二刷题目描述 感觉算比较有意思的简单题了&#xff0c;耗了不少时间优化 思路 & 代码 这次注释写得比较详细&#xff0c;直接看注释吧&#xff5e; class Solution {public boolean isStraight(int[] nums) {// O(n) && O(n)…

5分绩点转4分_工作复盘|因为这5点,4月份目标没完成

写在前面&#xff1a;用文字记录生活&#xff0c;让成长变得有迹可循&#xff01;4月份非常的繁忙&#xff0c;疫情慢慢消退&#xff0c;公司的业绩也慢慢在恢复&#xff1b;4月初的时候&#xff0c;公司定了月目标&#xff1a;成交100个学员&#xff08;非团单&#xff09;&am…

【LeetCode笔记】剑指 Offer 58 - I. 翻转单词顺序(Java、栈、双指针)

文章目录题目描述思路 & 代码二刷题目描述 用栈来做挺简单的&#xff0c;也可以用双指针。 思路 & 代码 既然是反向&#xff0c;那么从后往前&#xff0c;用双指针截取出字符串即可。 class Solution {// 双指针public String reverseWords(String s) {StringBuil…

【LeetCode笔记】剑指 Offer 57-. 和为s的两个数字 (Java、对撞双指针)

文章目录题目描述思路 & 代码二刷题目描述 很好的一道思路题&#xff0c;可以用来理解状态、双指针。注意&#xff1a;数组有序&#xff0c;否则需要用哈希表来做。 思路 & 代码 双指针&#xff1a;从头、尾往里走&#xff0c;重点在于为何不会丢失解状态 S(x, y)&…

python tkinter画笑脸_Python3 tkinter基础 Canvas create_polygon 画三角形

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ Author : 行初心 Date : 18-9-30 Blog : www.cnblogs.com/xingchuxin GitHub : github.com/GratefulHeartCoder """ fr…

【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)

文章目录题目描述思路 & 代码二刷题目描述 花了不少时间来优化 &#xff0c;很好的一道用来理解滑动窗口的题&#xff5e; 思路 & 代码 要点&#xff1a;为了 O(n) 复杂度&#xff0c;左右边界都只能往右走滑动窗口&#xff1a;存储当前连续正数序列 class Soluti…

设计一个类代表二维空间的一个圆。_平面设计基础——点、线、面

平面构成是以研究造型要素及构成规律为内容&#xff0c;讲点、线、面和基本形等视觉要素进行合理的排版合成在一个二维的平面上的艺术表现形式。平面构成是一种视觉形象的二维构成&#xff0c;主要是视觉的二维空间。平面构成他通过对造型要素的理性分析和严格的形式构成训练来…

【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)

文章目录思路 & 代码代码 & 思路二刷思路 & 代码 应该在二叉树的最近公共祖先之前写 需要用到二叉搜索树的特性&#xff5e; 代码 & 思路 分成四种情况即可&#xff0c;具体见代码注释时间复杂度 O(logn) /*** Definition for a binary tree node.* publ…

python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

本文实例讲述了Python 类属性与实例属性&#xff0c;类对象与实例对象用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;demo.py&#xff08;类属性&#xff0c;所有实例对象共用类属性&#xff09;&#xff1a; # 定义工具类 继承object是为了兼容python2.x class …

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)

文章目录题目描述思路 & 代码二刷题目描述 讲道理&#xff0c;感觉算有点难度的题目了 &#xff0c;还是需要时不时看看。 思路 & 代码 正负数情况可以不考虑&#xff08;补码&#xff09;核心&#xff1a;加法 进位和 非进位和关于位运算符的选择&#xff0c;le…

【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)

文章目录题目描述思路 & 代码链表模拟法数学方法二刷题目描述 约瑟夫环&#xff01;题目可太经典了说实话还是有点难度的 思路 & 代码 链表模拟法 第一想法是用 LinkedList&#xff0c;但是会超时&#xff0c;于是选择ArrayList关键在于 index (index m - 1) %…

python怎么画参数函数图像_详解pandas.DataFrame.plot() 画图函数

首先看官网的DataFrame.plot( )函数 DataFrame.plot(xNone, yNone, kindline, axNone, subplotsFalse, sharexNone, shareyFalse, layoutNone,figsizeNone, use_indexTrue, titleNone, gridNone, legendTrue, styleNone, logxFalse, logyFalse, loglogFalse, xticksNone, ytick…

【学习笔记】第一章——操作系统的概念、功能、特征、发展分类(系统调用、并发共享虚拟异步)

文章目录一. 概念、功能与目标定义&#xff1a;功能1. 系统资源的管理者2. 用户和计算机硬件之间的接口3. 最接近硬件的层次二. 特征1. 并发2. 共享3. 虚拟4. 异步三. 发展分类1. 手工操作阶段2. 单道批处理系统3. 多道批处理系统4. 分时操作系统5. 实时操作系统总结一. 概念、…

【学习笔记】第一章——操作系统的运行机制、体系结构和内核(核心态、原语、大内核 微内核、特权指令)

文章目录总览一. 运行机制&#xff1a;1. 指令2. 处理器状态3. 程序二. 内核1. 定义2. 在层次结构中的划分三. 体系结构总览 重要知识点&#xff1a;特权指令 & 内核程序&#xff0c;只能在核心态执行 一. 运行机制&#xff1a; 1. 指令 指令&#xff1a;CPU 能识别、…