解决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

相关推荐
汉克老师13 小时前
GESP7级C++考试语法知识(二、指数函数(3、综合练习)
c++·算法·数学建模·指数函数·gesp7级·复利
伊布拉西莫13 小时前
LangChain LCEL源码深度剖析
python·langchain
用心_承载未来13 小时前
从“复制链接→打开APP“到“一键解析“:我做了个短视频去水印工具
python·去水印·短视频去水印
TYUT_xiaoming13 小时前
yolo模型训练
人工智能·python·yolo
林间码客13 小时前
04 ROC曲线与AUC:从零开始手动计算
大数据·人工智能·算法
Irissgwe13 小时前
map/set/multimap/multiset 的底层逻辑与实现
数据结构·c++·算法·二叉树·stl·c·红黑树
圣保罗的大教堂13 小时前
leetcode 2130. 链表最大孪生和 中等
leetcode
IronMurphy13 小时前
【算法五十八】23. 合并 K 个升序链表
数据结构·算法·链表
MageGojo13 小时前
百度热搜API接入实战:数据结构解析与工程化调用指南
python·数据抓取·api集成·热点数据·接口调试
思茂信息13 小时前
CST软件基于液态金属开关的方向图可重构天线
服务器·算法·重构·cst·仿真软件·电磁仿真