解决leetcode第3782题交替删除操作后最后剩下的整数

3782.交替删除操作后最后剩下的整数

难度:困难

问题描述:

给你一个整数n。

我们将1到n的整数按从左到右的顺序排成一个序列。然后,交替地执行以下两种操作,直到只剩下一个整数为止,从操作1开始:

操作1:从左侧开始,隔一个数删除一个数。

操作2:从右侧开始,隔一个数删除一个数。

返回最后剩下的那个整数。

示例1:

输入:n=8

输出:3

解释:

写下序列[1,2,3,4,5,6,7,8]。

从左侧开始,我们删除每隔一个数字:[1,2,3,4,5,6,7,8]。剩下的整数是[1,3,5,7]。

从右侧开始,我们删除每隔一个数字:[1,3,5,7]。剩下的整数是[3,7]。

从左侧开始,我们删除每隔一个数字:[3,7]。剩下的整数是[3]。

示例2:

输入:n=5

输出:1

解释:

写下序列[1,2,3,4,5]。

从左侧开始,我们删除每隔一个数字:[1,2,3,4,5]。剩下的整数是[1,3,5]。

从右侧开始,我们删除每隔一个数字:[1,3,5]。剩下的整数是[1,5]。

从左侧开始,我们删除每隔一个数字:[1,5]。剩下的整数是[1]。

示例3:

输入:n=1

输出:1

解释:

写下序列[1]。

最后剩下的整数是1。

提示:

1<=n<=1015

问题分析:

这个问题主要完成两个操作,一是从左侧开始,向右隔一个数删除一个数,并返回处理之后的结果。二是从右侧开始,向左隔一个数删除一个数,并返回处理之后的结果。这两个操作用python列表切片操作可以快速完成,设计的两个函数分别是operate_to_right(a)和operate_to_left(a)。然后通过这两个函数,构造循环对原始的列表交替进行删除操作,得到最后剩下的那个数,问题得到解决。

程序如下:

python 复制代码
#从列表a左侧开始,向右隔一个数删除一个数,返回处理之后的结果
def operate_to_right(a):
    return a[::2]

#从列表a右侧开始,向左隔一个数删除一个数,返回处理之后的结果
def operate_to_left(a):
    return a[::-2][::-1]

#主程序
n=int(input('pls input n='))
a=list(range(1,n+1))
while len(a)>1:
    b=operate_to_right(a)
    print(f'从{a}左侧开始,向右每隔一个数删除一个数字,剩下的整数是{b}')
    a=operate_to_left(b)
    print(f'从{b}右侧开始,向左每隔一个数删除一个数字,剩下的整数是{a}')
print(f'最后剩下的数字是{a[0]}')

运行实例一

pls input n=1

最后剩下的数字是1

运行实例二

pls input n=3

从[1, 2, 3]左侧开始,向右每隔一个数删除一个数字,剩下的整数是[1, 3]

从[1, 3]右侧开始,向左每隔一个数删除一个数字,剩下的整数是[3]

最后剩下的数字是3

运行实例三

pls input n=9

从[1, 2, 3, 4, 5, 6, 7, 8, 9]左侧开始,向右每隔一个数删除一个数字,剩下的整数是[1, 3, 5, 7, 9]

从[1, 3, 5, 7, 9]右侧开始,向左每隔一个数删除一个数字,剩下的整数是[1, 5, 9]

从[1, 5, 9]左侧开始,向右每隔一个数删除一个数字,剩下的整数是[1, 9]

从[1, 9]右侧开始,向左每隔一个数删除一个数字,剩下的整数是[9]

最后剩下的数字是9

相关推荐
CoovallyAIHub3 分钟前
多 Agent 手术推理框架:Agent 辩论+RAG 补上手术知识,零样本超越监督基线 14.6 个百分点
算法·架构·机器人
干啥啥不行,秃头第一名6 分钟前
STL容器内部实现剖析
开发语言·c++·算法
Zarek枫煜6 分钟前
zig与c3的冒泡排序算法
算法
敏编程9 分钟前
一天一个Python库:tomlkit - 轻松解析和操作TOML配置
python
xiaoye-duck10 分钟前
《算法题讲解指南:动态规划算法--简单多状态dp问题》--13.删除并获得点数,14.粉刷房子
c++·算法·动态规划
老鼠只爱大米11 分钟前
LeetCode经典算法面试题 #347:前 K 个高频元素(最小堆、桶排序、快速选择等多种实现方案详解)
算法·leetcode·堆排序·java面试题·桶排序·快速选择·topk
2401_8318249613 分钟前
内存泄漏检测与防范
开发语言·c++·算法
2401_8796938715 分钟前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
yunyun3212321 分钟前
机器学习模型部署:将模型转化为Web API
jvm·数据库·python
FluxMelodySun24 分钟前
机器学习(二十五) 降维:主成分分析(PCA)及特征值分解
人工智能·算法·机器学习