leetcode:祖玛游戏
思路:
1.记忆化搜索剪枝
2.删除的递归函数书写
3.状态记录队列
4.BFS暴力模拟,所有状态所有位置进行插空然后进入下一个状态
代码:
func findMinStep(board string, hand string) int {// BFS 暴力模拟 + 去重剪枝//记录状态q := make([][]string, 0)//初始化状态q = append(q, []string{board, hand})//记录深度depth := 0//用于去重剪枝m := map[string]bool{} //遍历状态,有点像BFSfor len(q) > 0 {//当前深度depth++//当前剩余k := len(q)//遍历所有状态for k > 0 {k--//提取当前状态cur := q[0]//剩余状态q = q[1:]// 把 h 中的每个元素暴力插入 b 中的每个位置,然后递归碰撞b, h := cur[0], cur[1]for i := 0; i <= len(b); i++ {for j := 0; j < len(h); j++ {b2 := ""//遍历len(b) + 1 个空位插进去if i < len(b){b2 = del3(b[0:i] + string(h[j]) + b[i:])} else {b2 = del3(b[:] + string(h[j]))}//hand中取值少一个h2 := h[0:j] + h[j+1:]if b2 == "" { // 递归碰撞后所有小球消失return depth}// 去重剪枝key := fmt.Sprintf("%v_%v", b2, h2)// 之前出现过,现在再出现,深度只会更深if m[key] {continue}//没出现过,改成truem[key] = true//加入队列q = append(q, []string{b2, h2})}}}}return -1
}// 递归碰撞删除所有长度3及以上的子串
func del3(s string) string {//初始值count := 1for i := 1; i < len(s); i++ {//叠加记录if s[i] == s[i-1] {count++} else {//迭代删除if count >= 3 {return del3(s[0:i-count] + s[i:])}//没超过三个,重置count = 1}}//i到最后,剩余处理if count >= 3 {return del3(s[0 : len(s)-count])}return s
}
总结:
bfs暴力模拟+剪枝
leetcode:祖玛游戏相关推荐
- LeetCode刷题实战488:祖玛游戏
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- LeetCode每日一题488. 祖玛游戏
488. 祖玛游戏 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也 ...
- LeetCode 力扣每日一题 488.祖玛游戏
题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...
- Leetcode 488.祖玛游戏
祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...
- Java实现 LeetCode 488 祖玛游戏
488. 祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色®,黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一 ...
- leetcode刷题----祖玛游戏(14)
在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩球. 你的目标是 清空 桌面上所有的球.每一 ...
- LeetCode 488. 祖玛游戏
题目描述 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...
- JAVA程序设计:祖玛游戏(LeetCode:488)
回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置 ...
- 面试官:祖玛游戏玩过么?我来拷拷你~
题目地址(488. 祖玛游戏) https://leetcode-cn.com/problems/zuma-game/ 题目描述 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色 ...
- 488 Zuma Game 祖玛游戏
回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置 ...
最新文章
- kruskai算法c语言实现,并查集 - xiaobaoqiu Blog
- 【Pygame小游戏】这款经典的炸弹人超能游戏上线,你爱了嘛?(附源码)
- 计算连续登陆最大天数
- Android应用程序内部启动Activity过程(startActivity)的源代码分析
- 目标检测——夏侯南溪目标检测模型之输出信息显示
- linux配置NFS系统
- excel处理html文件,html网页显示excel表格数据-html读取本地excel文件并展示
- 手工做迷宫_手工DIY好玩双人大型立体迷宫玩具
- [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 4 周:选择期刊
- 一文搞懂 | Linux 时钟子系统
- 计算机《画图》教案学生状态,《初识“画图”》教案设计.doc
- 使用Viewpager Indicator实现图片无限轮播
- 用凯利公式玩转炒股,一文全懂
- 微软发布免费的文件恢复工具Windows File Recovery
- 今日学习之SQL基本语法与操作
- 千万不要死于无知——心理状态
- 解决Playbook不能充电的问题
- 我,32岁零基础转大数据,不需要别人怎么看!
- matlab的多变量dmc源程序,基于MATLAB多变量DMC算法仿真技术研究
- 计算机毕业设计ssm基于SSM的资产管理平台的设计与实现hx448系统+程序+源码+lw+远程部署
热门文章
- SAP所有模块用户出口(User Exits) 一
- java 精确到微妙_如何在Java中以微秒精度测量时间?
- bzoj 1226 学校食堂
- 数据库建表时,对于字段的数据类型的选择
- Flutter 打开外部第三方应用
- static关键字是什么意思?java中是否可以覆盖一个private方法或者static方法
- 电邮地址_电子邮件如何运作?
- html上传后门,网站查后门软件 WebShellKiller
- [踩坑篇]logrotate切割日志后,日志还是写在老日志文件中
- 基金、社保和QFII等机构的重仓股排名评测