【力扣】LCR 130. 衣橱整理

一、题目描述

二、算法思路

这是⼀道非常典型的「搜索」类问题。
我们可以通过「深搜」或者「宽搜」,从 [0, 0] 点出发,按照题目的要求(选择  向右移动一格 或  向下移动一格,但不能移动到衣柜之外 一直往 [m - 1, n - 1] 位置走。
同时,设置⼀个全局变量。每次走到⼀个合法位置,就将全局变量加一。当我们把所有能走到的路都走 完之后,全局变量里面存的就是最终答案。

三、解法

 在这里我们使用的是floodfill算法。

题目要求是选择 向右移动一格 或 向下移动一格,但不能移动到衣柜之外。对此,我们可以创建dx,dy两个移动数组,dx中的值表示当前行要加的数,dy中的值表示当前列要加的数。

令dx = {0,1}; dy = {1,0},必须保证dx数组中的0对应dy数组中的1,dy数组中的1对应dy数组中的0。这样才能实现向右移动和向下移动。

我们举例来说明一下:

假设当前处于二维数组中下标为[1,2]的位置,

我们向右移动,则到达[1,3]。向右移动时,行不变,只需列+1;

向下移动,则到达[2,2]。向下移动时,列不变,只需行+1;

 我们还要创建一个布尔类型的标记数组vis,将遍历过的位置标记一下,避免重复遍历。

递归函数:对于本题,我们的递归函数dfs,参数只需当前下标位置(int i ,int j)。

解决该题,我们还需要一个验证数位之和是否满足题目要求的函数

四、解题代码

class Solution {int m, n;int[] dx = {0,1};int[] dy = {1,0};boolean[][] vis;int cnt;int ret;  //统计结果public int wardrobeFinishing(int _m, int _n, int _cnt) {m = _m;n = _n;cnt = _cnt;vis = new boolean[m][n];dfs(0,0); return ret;}public void dfs(int i, int j) {ret++;vis[i][j] = true;//遍历dx,dy,相当于遍历向右、向下的位置for(int k = 0; k < 2; k++) {int x = i + dx[k];int y = j + dy[k];if(x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] && check(x,y)) {dfs(x,y);}}}public boolean check(int i, int j) {int tmp = 0;while(i != 0) {tmp += i % 10;i /= 10;}while(j != 0) {tmp += j % 10;j /= 10;}return tmp <= cnt;}
}

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

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

相关文章

详解Spring IoCDI(二)

目录 承接上文&#xff1a;详解Spring IoC&DI &#xff08;一&#xff09; 1.IoC详解 1.1方法注解Bean 1.2方法注解要配合类注解使用 1.3定义多个对象 1.4重命名Bean 1.5扫描路径 2.DI详解 2.1DI与IoC的关系 2.2属性注入 2.3构造方法注入 2.4Setter注入 2.5 三…

代码随想录算法训练营第四十五天|1049.最后一块石头的重量II、494.目标和、 474.一和零

1049.最后一块石头的重量II 文档讲解&#xff1a;代码随想录 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 本题其实就是尽量让石头分成重量相同的两堆&#xff0c;相撞之后剩下的石头最小&#xff0c;这样就化解成01背包问题了。 和昨天讲解的416. 分割等和…

visual studio code 全局搜索

VScode写代码的时候&#xff0c;会经常性的需要进行查找代码&#xff0c;那么怎么在Visual Studio Code中进行查找呢&#xff0c;下面就来大家vscode全局搜索的方法。 想要在vscode全局搜索进行全局搜索&#xff0c;使用快捷键CTRLSHIFTF即可进行搜索&#xff0c;也可以在左边…

哪吒监控+cfcdn+ 反代grp端口

哪吒监控cfcdn 反代grp端口 背景&#xff1a; 哪吒监控&#xff1a;感觉VPS线路不稳定&#xff0c;为了打消自己潜意识&#xff0c;希望量化延迟。 cfcdn&#xff1a;隐藏真实站点&#xff0c;保障小鸡隐秘安全 反代grpc端口: 反代grpc到支持https(TLS)的端口&#xff0c;这…

Tomcat启动闪退问题及解决方法

Tomcat启动闪退问题可能由多种原因引起&#xff0c;以下是一些常见的原因及相应的解决方法&#xff0c;按照清晰的结构进行归纳&#xff1a; 一、环境变量问题 Java环境问题&#xff1a;Tomcat依赖于Java环境&#xff0c;如果JDK未正确安装或环境变量配置不正确&#xff0c;会…

Elasticsearch 认证模拟题 - 3

1、题目 有一索引有 3 个字段&#xff0c;请写一个查询去匹配这三个字段&#xff0c;并且将三个字段的评分相加作为最后的总评分 # 创建索引 PUT task {"mappings": {"properties": {"fielda":{"type": "text"},"fie…

TrueNAS开启SSH登录ROOT

简介: 从 SCALE Bluefin 22.12.0 开始,为了加强安全性并遵守联邦信息处理标准 (FIPS),root帐户登录已被弃用。所有 TrueNAS 用户都应创建具有所有必需权限的本地管理员帐户,并开始使用它来访问 TrueNAS。当根用户密码被禁用时,只有管理用户帐户才能登录 TrueNAS Web 界面。…

从零学算法2965

2965. 找出缺失和重复的数字 给你一个下标从 0 开始的二维整数矩阵 grid&#xff0c;大小为 n * n &#xff0c;其中的值在 [1, n2] 范围内。除了 a 出现 两次&#xff0c;b 缺失 之外&#xff0c;每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个…

轮状病毒简介-卡梅德生物

轮状病毒是一种非常常见的病毒&#xff0c;主要影响婴幼儿和小孩&#xff0c;引起严重的胃肠炎&#xff0c;表现为严重腹泻、呕吐、发烧和脱水。这种病毒全球流行&#xff0c;是全世界五岁以下儿童因腹泻导致死亡的主要原因之一。轮状病毒属于Reoviridae家族&#xff0c;具有双…

逻辑回归【python,机器学习,算法】

逻辑回归是一种有监督的学习分类算法&#xff0c;用于预测目标变量的概率。目标或因变量的性质是二分法的&#xff0c;这意味着将只有两个可能的类。主要解决二分类问题。 主要步骤有三个&#xff1a; 求线性回归曲线。通过 sigmoid 函数将线性回归曲线转为 0-1 范围函数。 …

机器学习-11-使用kaggle命令下载数据集和操作指南

参考kaggle API 命令下载数据集 参考Kaggle操作完整指南(2023版) 参考Kaggle如何入门? 1 kaggle操作指南 Kaggle 是一个流行的数据科学竞赛平台。由 Goldbloom 和 Ben Hamner 创建于 2010 年。为什么这两个家伙要创立这样一个平台呢? 数据科学社区一直有这样一个难题:对…

低代码开发平台(Low-code Development Platform)的模块组成部分

低代码开发平台&#xff08;Low-code Development Platform&#xff09;的模块组成部分主要包括以下几个方面&#xff1a; 低代码开发平台的模块组成部分可以按照包含系统、模块、菜单组织操作行为等维度进行详细阐述。以下是从这些方面对平台模块组成部分的说明&#xff1a; …

docker安装mysql8和mysql5.7

1.docker安装mysql5.7,请点击此链接 2.docker安装mysql8并挂载数据卷 docker pull mysql:8.0 docker run --name mysql8 -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:8.0 docker run --name mysql8 -e MYSQL_ROOT_PASSWORD123456 -v /mqq/mysql8/datadir:/var/lib/mysql -d…

虚拟dom的理解

由普通的js对象来描述dom对象&#xff0c;是对于真实dom的映射&#xff0c;因为不是真实的dom对象所以叫虚拟dom。因为js处理数据的速度比操作dom的速度更快&#xff0c;性能更好&#xff0c;所以让现代这些react vue 等框架都采用了虚拟dom。 key值是唯一性的,在虚拟dom树进行…

【喜报】科大睿智服务企业通过CMMI3级认证

​北京建投科信科技发展股份有限公司&#xff08;以下简称“北京建投科技” &#xff09;前身为北京银帝科技发展公司&#xff0c;成立于1993年&#xff0c;注册资本6,000万元&#xff0c;为中国建银投资有限责任公司&#xff08;简称“中国建投”&#xff09;的成员企业建投华…

现在,所有人都能免费用GPT-4o了!

OpenAI今日官宣&#xff0c;ChatGPT正式向所有用户免费开放&#xff01;所有用户均可以访问定制化GPT、分析图表、询问有关照片的问题以及5月初GPT-4o添加的其他功能。 OpenAI今天在X上发布推文&#xff1a; 「所有ChatGPT免费用户现在都可以使用浏览、视觉、数据分析、文件上…

element table表格行列合并span-method,根据数据动态行列合并

表格行列合并需要用到 table的方法 span-method 根据数据来进行动态的行列合并&#xff0c;实例如下&#xff1a; <el-table:data"tableData":span-method"objectSpanMethod" style"width: 100%"><el-table-columnprop"key"l…

mac电脑生成文件下载URL

1.首先打开web共享&#xff0c;终端方式。 开始 sudo apachectl start 停止&#xff1a; sudo apachectl stop 重启&#xff1a; sudo apachectl restart 2.将需要下载的文件 app.v1.6.12_note.apk /Library/WebServer/Documents/ 目录下 3. 同一网络下&#xff0c;直接用…

C++系列——————类和对象(上)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、面向对象的三大特征二、类的引入2.1类的定义 三.类的访问限定符3.1访问限定符的介绍3.2.访问限定符的使用 四、类的作用域五、类的实例化六、类对象模型6.1…

JavaScript的内存管理机制

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、内存…