390. 消除游戏

分析

这题看完像是抓住了什么,但又像啥也没抓住。
当没有思路的时候,最好的解题思路就是先用最暴力最弱智的办法把它做出来,然后再进行优化。

  1. 暴力模拟法 - 真的弄出来个数组,按照他的规则不断的去筛掉其中不符合条件的值,如果剩下的数组长度为1,代表我们找到了目标元素。这种办法肯定会超时的。
  2. 数学分析法 - 分析暴力模拟法的思维过程。对于某个数组,我们肯定会先杀掉1,3,5等奇数,然后要分析剩下的数组长度是不是奇数,如果是,证明第一个元素会被干掉,跟第一趟算法是一样的。

暴力模拟法

class Solution:def lastRemaining(self, n: int) -> int:arr = [i for i in range(1, n+1)]while len(arr) > 1:arr = [arr[i] for i in range(len(arr)) if i%2][::-1]return arr[0]

数学分析法

class Solution:def lastRemaining(self, n: int) -> int:# flag: 0: forward, 1:reverse 控制正向和反向# length: cur arr length# step: 间隔res = 1 # res是数组排头(只剩下一个元素,必然是排头咯)flag, length, step = 0, n, 1while length > 1:if flag == 0:flag = 1res += stepelse:flag = 0if length%2: # 奇数,需要更新排头res += steplength >>= 1step <<= 1return res

【leetcode】2022.1.2 消除游戏相关推荐

  1. leetcode算法题-390.消除游戏

    列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序.请你对 arr 应用下述算法: 从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾. 重复上面的步骤,但这次 ...

  2. [LeetCode]390.消除游戏

    [LeetCode]390.消除游戏 题目 示例 方法 模拟 题目 列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序.请你对 arr 应用下述算法: 从左到右,删除第一个数字, ...

  3. LeetCode:390. 消除游戏————中等

    题目 390. 消除游戏 列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序.请你对 arr 应用下述算法: 从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾 ...

  4. Java实现 LeetCode 390 消除游戏

    390. 消除游戏 给定一个从1 到 n 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数 ...

  5. LeetCode刷题——消除游戏#390#Medium

    消除游戏的思路探讨与源码     消除游戏的题目如下图,该题属于递归类和数学类型的题目,主要考察对于数学方法的使用和递归方法的理解.本文的题目作者想到2种方法,分别是递归方法和数学模拟方法,其中递归方 ...

  6. LeetCode 390. 消除游戏

    ​​​​​​390. 消除游戏 给定一个从1 到 n 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始 ...

  7. H5 六边形消除游戏开发

    试玩地址,目前只适配pc端.源码 六边形游戏的鼻祖应该是这个 hex-frvr,原作者开发用的是 pixi 游戏引擎,本着快速开发的理念,本游戏采用 cocos creator,UI 延用 hex-f ...

  8. 子菜单挤压下方块元素_小心上瘾!全新类型的消除游戏|《土耳其方块》

    谁能想到,一款休闲益智游戏居然超过<刺激战场>.<王者荣耀>,成为苹果免费排行榜第一.那么究竟是一款什么样的免费游戏能够登顶免费排行榜第一呢?今天就让新游组将这款手游推荐给大家 ...

  9. 消除游戏美术设计的这些套路,你都知道吗?

    本篇是设计师Cherry通过积累数年的消除游戏设计经验,对比市面上多款消除游戏进行研究,在交互及色彩搭配两方面进行分析,相信文中满满的专业干货能给大家带来更多新的思路. ■ 消除类产品交互区域对比 图 ...

最新文章

  1. [转]linux 块设备驱动
  2. ajax 请求超过了5s 还没有返回 的话 就自动取消
  3. 计算机视觉工具包Luminoth
  4. JetBrains——账户登录错误(JetBrains Account Error:JetBrains Account connection error: www.jetbrains.com)解决方案
  5. 网络标准之:IANA定义的传输编码
  6. c++中计算2得n次方_七上,一元一次方程,知识点综合学霸笔记在手
  7. 数字图像处理技术的应 用领域
  8. 如何在command中使用log
  9. 教你Mac电脑复制手机粘贴的隐藏玩法
  10. QT配置OpenCV(二):成功
  11. AtCoder ABC 127F Absolute Minima
  12. 如何在app应用中添加支付宝支付功能(解惑版)
  13. mysql 服务卸载不干净
  14. 在linux运行php文件
  15. 机器视觉 · 工业光源
  16. kali 使用u盘安装提示“无法挂在光盘..”的解决方案
  17. 祝您健康:抢救脑溢血患者的神奇秘方:针刺十宣穴,涌泉穴
  18. 1. Nacos的安装与启动
  19. 编程语言排行,C# 和 C++ 有望超越C?
  20. double进行四舍五入

热门文章

  1. 通用开放式架构(GOA)
  2. navicat导出sql数据,保留datetime三位小数
  3. 苹果应用商店 服务器出错,Mac App store出现未知错误怎么办?Mac市场错误解决办法...
  4. 爬虫第三天:爬内部员工的照片
  5. linux删除ust文件权限不够,修改linux的umask值
  6. 桌面微型计算机,一、微机室(云桌面).PDF
  7. VC Spyglass CDC(二)常见的CDC处理方法
  8. Asynchronous example Thrift in Java
  9. Science 期刊及其子刊
  10. 网易云信发布两大元宇宙解决方案,打响进军元宇宙第一枪