原题
从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个数的和,则最终还是要在这些数字的运算形式上做文章。考虑如下两个形式: