博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-leetcode-390-消除游戏
阅读量:4115 次
发布时间:2019-05-25

本文共 1239 字,大约阅读时间需要 4 分钟。

题目描述:

给定一个从1 到 n 排序的整数列表。
首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。
第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。
我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。
返回长度为 n 的列表中,最后剩下的数字。

示例:

输入:n = 9,1 2 3 4 5 6 7 8 92 4 6 82 66输出:6

代码 1:

class Solution:    def lastRemaining(self, num):        if num == 0 or num == 1:            return num        else:                 num = [i for i in range(1, num+1)]            while len(num) > 1:                num0 = []                num1 = []                for i in range(len(num)):                    if i % 2 != 0:                        num0.append(num[i])                num = num0                                 if len(num) == 1:                    break                num.sort(reverse=True)                                  for i in range(len(num)):                                   if i % 2 != 0:                        num1.append(num[i])                          num = num1                               num.sort()            return num[0]

哈哈哈,当num=1000000时,此做法会爆内存~

代码 2:

class Solution(object):    def lastRemaining(self, n):        """        :type n: int        :rtype: int        """        if n == 1:            return 1        else:            return 2*((n//2)+1-self.lastRemaining(n//2))

使用递归方法

转载地址:http://wvwpi.baihongyu.com/

你可能感兴趣的文章
python数字逆序输出及多个print输出在同一行
查看>>
ESP8266 WIFI数传 Pixhaw折腾笔记
查看>>
苏宁产品经理面经
查看>>
百度产品经理群面
查看>>
去哪儿一面+平安科技二面+hr面+贝贝一面+二面产品面经
查看>>
element ui 弹窗在IE11中关闭时闪现问题修复
查看>>
vue 遍历对象并动态绑定在下拉列表中
查看>>
Vue动态生成el-checkbox点击无法选中的解决方法
查看>>
python __future__
查看>>
MySQL Tricks1
查看>>
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(二)
查看>>
pytorch(三)
查看>>
pytorch(四)
查看>>
pytorch(5)
查看>>
pytorch(6)
查看>>
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>