LeetCode 723. 粉碎糖果(模拟)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

这个问题是实现一个简单的消除算法。

给定一个二维整数数组 board 代表糖果所在的方格,不同的正整数 board[i][j] 代表不同种类的糖果,如果 board[i][j] = 0 代表 (i, j) 这个位置是空的
给定的方格是玩家移动后的游戏状态,现在需要你根据以下规则粉碎糖果,使得整个方格处于稳定状态并最终输出。

如果有三个及以上水平或者垂直相连的同种糖果,同一时间将它们粉碎,即将这些位置变成空的。
在同时粉碎掉这些糖果之后,如果有一个空的位置上方还有糖果,那么上方的糖果就会下落直到碰到下方的糖果或者底部,这些糖果都是同时下落,也不会有新的糖果从顶部出现并落下来。
通过前两步的操作,可能又会出现可以粉碎的糖果,请继续重复前面的操作。
当不存在可以粉碎的糖果,也就是状态稳定之后,请输出最终的状态。
你需要模拟上述规则并使整个方格达到稳定状态,并输出。

样例 :
输入:
board = 
[[110,5,112,113,114],
[210,211,5,213,214],
[310,311,3,313,314],
[410,411,412,5,414],
[5,1,512,3,3],
[610,4,1,613,614],
[710,1,2,713,714],
[810,1,2,1,1],
[1,1,2,2,2],
[4,1,4,4,1014]]
输出:
[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],
[110,0,0,0,114],[210,0,0,0,214],
[310,0,0,113,314],[410,0,0,213,414],
[610,211,112,313,614],[710,311,412,613,714],
[810,411,512,713,1014]]

解释:
在这里插入图片描述

注释 :
board 数组的行数区间是 [3, 50]。
board[i] 数组的长度区间(即 board 数组的列数区间)是 [3, 50]。
每个 board[i][j] 初始整数范围是 [1, 2000]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/candy-crush
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 把连续三个不为0的标记为负数,待删除,横向和纵向都要扫描
  • 把标记为负数的置为0
  • 按纵向扫描,填补下方的空白,双指针法
  • 递归处理,如果没有需要操作的,达到稳态,返回不再递归
class Solution {
public:vector<vector<int>> candyCrush(vector<vector<int>>& b) {bool todo = false;int m = b.size(), n = b[0].size(), i, j, up, down;for(i = 0; i < m; ++i)//横向检查for(j = 0; j < n-2; ++j){if(b[i][j] == 0)continue;if(abs(b[i][j])==abs(b[i][j+1]) && abs(b[i][j+1])==abs(b[i][j+2])){b[i][j] = b[i][j+1] = b[i][j+2] = -abs(b[i][j]);//标记为负的todo = true;}}for(j = 0; j < n; ++j)//纵向检查for(i = 0; i < m-2; ++i){if(b[i][j] == 0)continue;if(abs(b[i][j])==abs(b[i+1][j]) && abs(b[i+1][j])==abs(b[i+2][j])){b[i][j] = b[i+1][j] = b[i+2][j] = -abs(b[i][j]);//标记为负的todo = true;}}for(i = 0; i < m; ++i)//负的 标记为0要删除for(j = 0; j < n; ++j)if(b[i][j] < 0)b[i][j] = 0;for(j = 0; j < n; ++j)//纵向掉落{down = up = m-1;//从最底下开始往上找while(down >= 0){	//双指针搬移数据if(b[down][j] == 0)//底下待填{up = min(down, up);//up记住上次的位置while(up >= 0 && b[up][j] == 0)up--;if(up >= 0)//上面找到糖果swap(b[down][j], b[up][j]);//交换elsebreak;//找完了}down--;}}if(todo)candyCrush(b);return b;}
};

24 ms 10.2 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

css动画放大延迟,css3延时动画

不太理解属性都是什么意思&#xff0c;但是有动画效果&#xff0c;我也是惊呆了#animated_div{animation:animated_div 4s 1;-moz-animation:animated_div 4s 1;-webkit-animation:animated_div 4s 1;-o-animation:animated_div 4s 1; width:800px; height:500px; position:rel…

Hibernate 异常org.hibernate.LazyInitializationException: could not initialize proxy - no Session

最近代写毕业设计中小网站&#xff0c;SSH架构&#xff0c;三年没搞过这个&#xff0c;忘记了&#xff0c;今天遇到这个问题就记录下&#xff1a; 错误页面提示 could not initialize proxy - no Session 控制台 org.hibernate.LazyInitializationException: could not initial…

python中的异常

异常处理就是处理程序中的错误。谓错误是指在程序运行的过程中发生的一些异常事件&#xff08;如&#xff1a;除0溢出&#xff0c;数组下标越界&#xff0c;所要读取的文件不存在等等&#xff09;。 在python中提供专门用于处理程序中错误的一种机制&#xff0c;异常机制&#…

css3案例分析,CSS3动画/动画库以及案例分析(上)

在这html5遍天下的年代&#xff0c;越来越多的网页也用到了css3的动画效果&#xff0c;这让原本我们静态的页面有了更多的活力。最近也一直在做这方面的页面&#xff0c;有些小小的心得&#xff0c;和诸位分享下。CSS3的动画绝对是很赞的&#xff0c;不仅支持PC还支持移动端&am…

python中获取异常描述与else用法

获取异常描述 异常本身是一个对象&#xff0c;所携带了关于错误的比较详细描述&#xff0c;如何获取异常详细描述信息呢&#xff1f; try: f open("log.txt","r") a 10 b 0 ret a / b #捕获多个类型的异常 except IOError as ex: …

LeetCode 418. 屏幕可显示句子的数量(DP)*

文章目录1. 题目2. 解题1. 题目 给你一个 rows x cols 的屏幕和一个用 非空 的单词列表组成的句子&#xff0c;请你计算出给定句子可以在屏幕上完整显示的次数。 注意&#xff1a; 一个单词不能拆分成两行。 单词在句子中的顺序必须保持不变。 在一行中 的两个连续单词必须用…

网站服务器令牌获取,adobe - 获取Adobe Sign访问令牌以进行服务器到服务器身份验证 - 堆栈内存溢出...

_bananabread有正确的想法。 按照本网站上的步骤操作&#xff1a;直到您使用refresh_token获得JSON响应&#xff0c;这就是您所需要的。接下来&#xff0c;您需要制作刷新令牌请求&#xff0c;以便在每次需要使用它时刷新令牌&#xff0c;并返回一个全新的OAuth令牌。这是一个J…

try…finally与嵌套及自定义异常抛出

try...finally... try...finally...语句用来表达这样的情况&#xff1a;在程序中&#xff0c;如果一个段代码必须要执行&#xff0c;即无论异常是否产生都要执行&#xff0c;那么此时就需要使用finally。 比如文件关闭&#xff0c;释放锁&#xff0c;把数据库连接返还给连接池…

LeetCode 568. 最大休假天数(DP)

文章目录1. 题目2. 解题1. 题目 力扣想让一个最优秀的员工在 N 个城市间旅行来收集算法问题。 但只工作不玩耍&#xff0c;聪明的孩子也会变傻&#xff0c;所以您可以在某些特定的城市和星期休假。 您的工作就是安排旅行使得最大化你可以休假的天数&#xff0c;但是您需要遵守…

安装数据库windows 安装redmine 详解

时间紧张&#xff0c;先记一笔&#xff0c;后续优化与完善。 近来公司有须要&#xff0c;要找一个项目管理工具&#xff0c;网上看了redmine还不错&#xff0c;终究项目经理选择了它&#xff0c;让我把平台给搭建起来并熟悉其中的功能。搭建的过程中超过了我的预计还破费了点工…

模块概念与使用及注意事项

1 模块概念 模块就是包含了python代码的文本文件&#xff0c;通俗讲&#xff0c;一个py文件就是一个模块。 2 使用模块(import) 比如&#xff0c;我们单独编写了一个模块&#xff0c;命名为mymodule.py&#xff0c;在该模块中我们定义一些函数和类&#xff0c;我们如何在test.…

魔兽世界转服务器显示完成,魔兽世界怀旧服:TAQ变简单了,为什么还是出现了AFK大潮?...

魔兽世界怀旧服在开服一年多以后&#xff0c;即将在2020年12月3日&#xff0c;迎来经典60年代的收官副本-第六阶段纳克萨玛斯大墓地(NAXX)。在差不多的时间段内&#xff0c;魔兽世界正式服也将上线全新的9.0版本-暗影国度。囧王者估计&#xff0c;在即将到来的12月份里面&#…

LeetCode 317. 离建筑物最近的距离(逆向BFS)*

文章目录1. 题目2. 解题2.1 正常思维BFS2.2 逆向思考BFS1. 题目 你是个房地产开发商&#xff0c;想要选择一片空地 建一栋大楼。 你想把这栋大楼够造在一个距离周边设施都比较方便的地方&#xff0c;通过调研&#xff0c;你希望从它出发能在 最短的距离和 内抵达周边全部的建筑…

Ubuntu 运行Asp.net MVC3

1 先通过SVN获取最新版的Asp.net MVC3代码 2 用Monodevelop打开后&#xff0c;进入Web项目的引用,删除标了红色的引用 3 添加引用“System.Web.Mvc.dll”和“System.Web.WebPages.Deployment.dll” 4 重新编译&#xff0c;然后删除Web项目的bin下的“Microsoft.Web.Infrastruct…

LeetCode 431. 将 N 叉树编码为二叉树(递归/层序)

文章目录1. 题目2. 解题2.1 递归2.2 BFS1. 题目 设计一个算法&#xff0c;可以将 N 叉树编码为二叉树&#xff0c;并能将该二叉树解码为原 N 叉树。 一个 N 叉树是指每个节点都有不超过 N 个孩子节点的有根树。 类似地&#xff0c;一个二叉树是指每个节点都有不超过 2 个孩子节…

包概念与__init__注意事项

1.包的概念 为了组织好模块&#xff0c;将多个模块分为一个包。包是python模块文件所在的目录&#xff0c;且该目录下必须存在__init__.py文件。常见的包结构如下&#xff1a; package_a ├── __init__.py ├── module_a1.py └── module_a2.py package_b ├── _…

服务器上有涉密文件,涉密文件保密管理规定

为贯彻落实国家和省、市、区保密局对涉密文件资料管理工作的要求&#xff0c;进一步做好我办涉密文件资料管理&#xff0c;特制定本规定。一、涉密文件的拟制、印刷、传递、承办、借阅、保管、归档、移交和销毁&#xff0c;必须严格履行审批、清点、登记、签收等手续。二、涉密…

服务器文件同步管理

服务器文件同步管理 原文 http://www.cnblogs.com/yanxiaodi/archive/2011/03/21/2296462.html 前几天有台服务器电源坏了&#xff0c;还好数据没有丢。因此必须做好服务器文件内容的备份。服务器主要是用来提供网站服务&#xff0c;带着一个数据库&#xff0c;数据库可以用分发…

LeetCode 774. 最小化去加油站的最大距离(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 假设我们在一条水平数轴上&#xff0c;列表 stations 来表示各个加油站的位置&#xff0c;加油站分别在 stations[0], stations[1], ..., stations[N-1] 的位置上&#xff0c;其中 N stations.length。 现在我们希望增加 K 个新的加油站&…

修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...

用ng的$http服务发起ajax请求&#xff0c;php返回的JSON数据格式要正确&#xff01;一开始我的php页面是这样返回数据的&#xff1a;if($result){$oid mysqli_insert_id($conn);echo "{msg:succ,oid:$oid}";}else{echo "{msg:error}";}然后总是报错&#…