网易首页 > 网易号 > 正文 申请入驻

2026-04-30:交替删除操作后最后剩下的整数。用go语言,给定一个整数 n,把 1 到 n 依次排成一行。之后反复进行两种删数方式,并且这两种

0
分享至

2026-04-30:交替删除操作后最后剩下的整数。用go语言,给定一个整数 n,把 1 到 n 依次排成一行。之后反复进行两种删数方式,并且这两种方式交替使用,先用第一种,再用第二种,一直持续到只剩下一个数为止。

  • • 第一种:从左往右,按“删一个、留一个”的规律处理。

  • • 第二种:从右往左,也按“删一个、留一个”的规律处理。

最终留下来的那个数是多少,返回它。

1 <= n <= 1000000000000000。

输入: 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]。

题目来自力扣3782。

过程详解+复杂度分析 一、题目核心规则回顾

  1. 1. 初始序列:1,2,3,...,n

  2. 2. 交替执行两种删除操作,先第一种,再第二种,循环直到只剩1个数:

  • • 第一种(左删):从左往右,删一个、留一个

  • • 第二种(右删):从右往左,删一个、留一个

3. 输入n=8,输出3。

二、n=8 完整删除步骤(超详细) 初始状态

序列:[1, 2, 3, 4, 5, 6, 7, 8]
剩余数字数量:8
当前要执行:第一种操作(左→右,删1留1)

第一步:执行第一种删除(左→右,删一个留一个)

规则:从最左边开始,删除第1个,保留第2个;删除第3个,保留第4个……依次循环
逐位处理:

  1. 1. 删1,留2

  2. 2. 删3,留4

  3. 3. 删5,留6

  4. 4. 删7,留8

✅ 剩余序列:[2, 4, 6, 8]
剩余数字数量:4
当前要执行:第二种操作(右→左,删1留1)

第二步:执行第二种删除(右→左,删一个留一个)

规则:从最右边开始,删除第1个,保留第2个;删除第3个,保留第4个……依次循环
原序列:[2, 4, 6, 8],从右往左数顺序:8、6、4、2
逐位处理:

  1. 1. 删8,留6

  2. 2. 删4,留2

从右往左删完后,恢复原左右顺序:
✅ 剩余序列:[2, 6]
剩余数字数量:2
当前要执行:第一种操作(左→右,删1留1)

第三步:执行第一种删除(左→右,删一个留一个)

规则:再次从左往右,删1留1
逐位处理:

  1. 1. 删2,留6

❌ 这里发现:严格按字面模拟和题目示例结果不一致
题目示例的删除步骤是:
初始[1,2,3,4,5,6,7,8]→ 左删剩[1,3,5,7]→ 右删剩[3,7]→ 左删剩[3]

这说明:题目中的「删一个留一个」定义是:保留第1个,删除第2个;保留第3个,删除第4个(和字面描述相反,是题目实际执行的规则)。

三、匹配题目示例的正确删除步骤(n=8) 初始序列

[1, 2, 3, 4, 5, 6, 7, 8],数量:8
第一轮:第一种操作(左→右,留1删1)
规则:从左到右,留第一个,删第二个;留第三个,删第四个……
处理后:[1, 3, 5, 7]

第二轮

序列:[1, 3, 5, 7],数量:4
执行:第二种操作(右→左,留1删1)
规则:从右到左,留第一个,删第二个;留第三个,删第四个……
从右往左数:7、5、3、1
留7,删5;留3,删1 → 恢复原顺序:[3, 7]

第三轮

序列:[3, 7],数量:2
执行:第一种操作(左→右,留1删1)
留3,删7 → 最终剩余:[3]

四、你提供的代码逻辑过程(非模拟,数学公式直接计算)

你的代码没有逐次模拟删除过程,而是用数学位运算直接计算结果,核心过程分3步:

  1. 1. 定义常量mask = 0xAAAAAAAAAAAAAAA
    这个十六进制数转换成二进制是:10101010...1010(偶数位全为1,奇数位全为0)。

  2. 2. 计算n-1:对输入数字做减1处理。

  3. 3. 位运算(n-1) & mask:
    按位与操作会只保留 n-1 的二进制偶数位,过滤掉奇数位。

  4. 4. 最后 +1:得到最终结果。

针对 n=8:
n-1=7(二进制 0111)
和 mask 按位与后得到 2(二进制 0010)
2+1=3 → 直接得到正确答案。

五、时间复杂度 & 额外空间复杂度 1. 时间复杂度

代码只做了4个固定操作:减法、按位与、加法、常量定义。
所有操作都是O(1)(常数时间),和输入n的大小(哪怕n是10^15)完全无关。
✅ 总时间复杂度:O(1)

2. 额外空间复杂度

代码没有创建数组、列表、栈等动态数据结构,只定义了:

  • • 1个入参 n

  • • 1个常量 mask

  • • 1个返回值变量
    所有空间都是固定大小,不随n变化。
    ✅ 总额外空间复杂度:O(1)

总结
  1. 1. 交替删除的核心是先左删、再右删循环,直到剩一个数;

  2. 2. 你的代码没有模拟删除过程,而是用位运算数学公式直接求解;

  3. 3. 时间复杂度:O(1)(常数级,极快);

  4. 4. 额外空间复杂度:O(1)(无额外内存消耗)。

Go完整代码如下:

package main

import (
"fmt"
)

func lastInteger(n int64)int64 {
const mask = 0xAAAAAAAAAAAAAAA// ...1010
return (n-1)&mask + 1 // 取出 n-1 的从低到高第 2,4,6,... 位,最后再加一(从 1 开始)
}
func main() {
n := int64(8)
result := lastInteger(n)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def last_integer(n: int) -> int:
mask = 0xAAAAAAAAAAAAAAA # binary: ...1010
return ((n - 1) & mask) + 1

def main():
n = 8
result = last_integer(n)
print(result)

if __name__ == "__main__":
main()

C++完整代码如下:

  



int64_t lastInteger(int64_t n) {
const int64_t mask = 0xAAAAAAAAAAAAAAA;
return ((n - 1) & mask) + 1;
}

int main() {
int64_t n = 8;
int64_t result = lastInteger(n);
std::cout << result << std::endl;
return 0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
河北富商相亲发现小23岁对象酷似亡妻,DNA检测后傻眼:怎么可能

河北富商相亲发现小23岁对象酷似亡妻,DNA检测后傻眼:怎么可能

罪案洞察者
2025-07-09 11:51:52
“我妈要敢在宿舍里这样,我就退学”,一段女家长视频让人力竭了

“我妈要敢在宿舍里这样,我就退学”,一段女家长视频让人力竭了

熙熙说教
2026-09-07 12:52:29
泽连斯基的结局,离终场还有多远?三则消息已经预示了未来

泽连斯基的结局,离终场还有多远?三则消息已经预示了未来

战友老邓
2026-10-17 10:12:28
律师也不容易啊!客户7500元洗浴卡抵扣5000律师费,直言资金周转困难,律师最终同意

律师也不容易啊!客户7500元洗浴卡抵扣5000律师费,直言资金周转困难,律师最终同意

火山詩话
2026-10-18 12:27:20
蔡国庆每月给弟弟蔡军发2万工资,发了20年,一共480万,条件就一个:在家全职照顾得阿尔茨海默症的母亲

蔡国庆每月给弟弟蔡军发2万工资,发了20年,一共480万,条件就一个:在家全职照顾得阿尔茨海默症的母亲

LULU生活家
2026-09-02 19:51:47
随着三镇1-3不敌申花,送中超4队提前保级,河南降级仅剩1种可能

随着三镇1-3不敌申花,送中超4队提前保级,河南降级仅剩1种可能

球场没跑道
2026-10-18 19:59:02
达成了!中国库里首秀!加盟全美第1高中名校

达成了!中国库里首秀!加盟全美第1高中名校

篮球实战宝典
2026-10-18 14:47:19
满脸横肉,神情恍惚,盲人演技,还没李沁自然,胡先煦也带不动她

满脸横肉,神情恍惚,盲人演技,还没李沁自然,胡先煦也带不动她

娱说瑜悦
2026-10-17 15:37:58
欧盟峰会变讨债现场?泽连斯基索要700亿援款,欧洲各国撕破脸

欧盟峰会变讨债现场?泽连斯基索要700亿援款,欧洲各国撕破脸

探源历史
2026-10-18 02:51:33
班主任坦言:如果你有一个上高中的孩子,这6个方面哪怕抓好一个,高考也稳了大半!

班主任坦言:如果你有一个上高中的孩子,这6个方面哪怕抓好一个,高考也稳了大半!

好爸育儿
2026-10-17 22:20:09
APEC那9天,深圳人能白拿的福利我算清了

APEC那9天,深圳人能白拿的福利我算清了

辉哥说动漫
2026-10-18 04:15:20
美俄达成一致,北约公布对俄作战计划,美若不参战,欧洲照打不误

美俄达成一致,北约公布对俄作战计划,美若不参战,欧洲照打不误

经纬戎韬
2026-10-17 00:31:57
性专家说:当一个异性开口跟你要钱,要礼物,不管对方是不是想试探你的真心,你都应该明白,你已被对方列入供养者行列

性专家说:当一个异性开口跟你要钱,要礼物,不管对方是不是想试探你的真心,你都应该明白,你已被对方列入供养者行列

心理观察局
2026-08-05 06:46:04
麻烦大了!伊朗总统无意间泄露绝密:美以轰炸致上千名导弹兵死亡

麻烦大了!伊朗总统无意间泄露绝密:美以轰炸致上千名导弹兵死亡

井普独白
2026-10-17 15:29:22
“郑伯克段于鄢”只有短短六个字,为何被誉为经典的春秋笔法?

“郑伯克段于鄢”只有短短六个字,为何被誉为经典的春秋笔法?

掠影后有感
2026-10-15 08:53:42
“爸妈带娃看世界4年未走出河南”引热议,4年去了4次鸡公山,被网友调侃“世界这本书,爸妈读了四页全在河南”

“爸妈带娃看世界4年未走出河南”引热议,4年去了4次鸡公山,被网友调侃“世界这本书,爸妈读了四页全在河南”

都市快报橙柿互动
2026-10-18 09:13:13
窦靖童宋妍霏同游环球影视,两个人大方牵手,感情一如既往的稳定

窦靖童宋妍霏同游环球影视,两个人大方牵手,感情一如既往的稳定

草莓解说体育
2026-10-18 19:26:33
宋佳问于和伟:为何不推荐我客串《伟大的长征》?于和伟回复搞笑

宋佳问于和伟:为何不推荐我客串《伟大的长征》?于和伟回复搞笑

娱最资讯
2026-10-10 12:26:29
乒乓球欧锦赛今日收官!上届男女冠亚军爆冷出局!小勒布伦邱党冲冠

乒乓球欧锦赛今日收官!上届男女冠亚军爆冷出局!小勒布伦邱党冲冠

好乒乓
2026-10-18 14:01:39
人到中年,这10款养老级单机游戏神作,值得一试!建议收藏慢慢玩

人到中年,这10款养老级单机游戏神作,值得一试!建议收藏慢慢玩

记录生活日常阿蜴
2026-10-17 02:01:00
2026-10-18 20:43:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1521文章数 83关注度
往期回顾 全部

科技要闻

王江舟院士:6G到底是不是骗局 是不是收割

头条要闻

男子把存20万银行卡藏鞋里寄出 老父步行近10公里报案

头条要闻

男子把存20万银行卡藏鞋里寄出 老父步行近10公里报案

体育要闻

巴萨5-2贝蒂斯11连胜 亚马尔传射金球先生处子球

娱乐要闻

郭麒麟被传领证,女方戳破谣言

财经要闻

马斯克:美债问题只能靠AI和机器人解决

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

教育
游戏
艺术
本地
公开课

教育要闻

小升初当中,最难的恐怕就只有数学了

国产性感新作最新更新上线!修复多项Bug 体验更佳

艺术要闻

17幅 俄罗斯当代画家Ksenya Istomina作品

本地新闻

因新荣记出圈,这座浙东小城才是吃货天堂

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版