思路:
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:祖玛游戏相关推荐

  1. ​LeetCode刷题实战488:祖玛游戏

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  2. LeetCode每日一题488. 祖玛游戏

    488. 祖玛游戏 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也 ...

  3. LeetCode 力扣每日一题 488.祖玛游戏

    题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...

  4. Leetcode 488.祖玛游戏

    祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...

  5. Java实现 LeetCode 488 祖玛游戏

    488. 祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色®,黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一 ...

  6. leetcode刷题----祖玛游戏(14)

    在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩球. 你的目标是 清空 桌面上所有的球.每一 ...

  7. LeetCode 488. 祖玛游戏

    题目描述 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...

  8. JAVA程序设计:祖玛游戏(LeetCode:488)

    回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置 ...

  9. 面试官:祖玛游戏玩过么?我来拷拷你~

    题目地址(488. 祖玛游戏) https://leetcode-cn.com/problems/zuma-game/ 题目描述 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色 ...

  10. 488 Zuma Game 祖玛游戏

    回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置 ...

最新文章

  1. kruskai算法c语言实现,并查集 - xiaobaoqiu Blog
  2. 【Pygame小游戏】这款经典的炸弹人超能游戏上线,你爱了嘛?(附源码)
  3. 计算连续登陆最大天数
  4. Android应用程序内部启动Activity过程(startActivity)的源代码分析
  5. 目标检测——夏侯南溪目标检测模型之输出信息显示
  6. linux配置NFS系统
  7. excel处理html文件,html网页显示excel表格数据-html读取本地excel文件并展示
  8. 手工做迷宫_手工DIY好玩双人大型立体迷宫玩具
  9. [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 4 周:选择期刊
  10. 一文搞懂 | Linux 时钟子系统
  11. 计算机《画图》教案学生状态,《初识“画图”》教案设计.doc
  12. 使用Viewpager Indicator实现图片无限轮播
  13. 用凯利公式玩转炒股,一文全懂
  14. 微软发布免费的文件恢复工具Windows File Recovery
  15. 今日学习之SQL基本语法与操作
  16. 千万不要死于无知——心理状态
  17. 解决Playbook不能充电的问题
  18. 我,32岁零基础转大数据,不需要别人怎么看!
  19. matlab的多变量dmc源程序,基于MATLAB多变量DMC算法仿真技术研究
  20. 计算机毕业设计ssm基于SSM的资产管理平台的设计与实现hx448系统+程序+源码+lw+远程部署

热门文章

  1. SAP所有模块用户出口(User Exits) 一
  2. java 精确到微妙_如何在Java中以微秒精度测量时间?
  3. bzoj 1226 学校食堂
  4. 数据库建表时,对于字段的数据类型的选择
  5. Flutter 打开外部第三方应用
  6. static关键字是什么意思?java中是否可以覆盖一个private方法或者static方法
  7. 电邮地址_电子邮件如何运作?
  8. html上传后门,网站查后门软件 WebShellKiller
  9. [踩坑篇]logrotate切割日志后,日志还是写在老日志文件中
  10. 基金、社保和QFII等机构的重仓股排名评测