消失的K个数字

这是一篇关于解决寻找从1到n的序列中,随机拿走k个数字后的缺失数字问题的文章。通过数学分析,当拿走一个数字时,可以通过两数之和来找到缺失值;拿走两个数字时,需要用到两个等式来解出这两个值;对于拿走k个数字的情况,算法的时间复杂度为O(kn)。此外,文中提到了与该问题相关的其他算法思路,例如利用异或操作找出出现奇数次的数字。
摘要由CSDN通过智能技术生成

原题

从1到n,n个数字,每个数字只出现一次。现在,随机拿走一个数字,请给出方法,找到这个数字。

如果随机拿走两个数字呢?

如果随机拿走k个数字呢?

分析

这个题目的含义是:n-1互不相同的整数,取值范围是[1,n],请找到1-n中,没有出现的整数(好像更难理解了:))。

当缺少一个数字的时候,很简单。计算1到n的和sum_more,然后再将n-1个整数求和,得到sum_less,则消失的数字就是(sum_more - sum_less)。

如果消失两个数字呢?按照上面的方法,假设消失的两个数字分别为a和b,1 <= a, b <= n,我们可以得到a + b = sum_more - sum_less。只有一个等式,无法确定a和b的值是多少。根据我们以前学习解方程式的经验,我们还需要一个等式,才能确定a和b的值。现在已知的条件,就只有sum_more,sum_less,这两个分别是n个数的和,以及n-2个数的和,则最终还是要在这些数字的运算形式上做文章。考虑如下两个形式:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值