巧解腾讯面试题
my张小秋 2012-01-02 05:55:14 原帖地址:http://topic.csdn.net/u/20111228/16/73a64b36-eddf-4013-803a-666157808071_2.html?seed=1996175816&r=77166777#r_77166777
面试题:
有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里
请找出丢失的数字,最好能有程序,最好算法比较快
假设n=10000
大家提供解法:很多,基本上是用搜索,查找,递归,bitmap,数学等方法解决
我的解法:
已知,1到n中缺少了三个数,n-3个数已打乱,求缺少的数:
假设这n-3个数存在一个b[n-3]数组中
int a[n]={1};
for(int i = 0; i < n-3; i++)
{
a[b[i]] = 0;
}
for(int i = 0; i < n; i++)
{
if(a[i] == 1)
{
//为什么其他的数字都被改变了,这个数值巍然不动?因为它不在b数组中,谢谢
}
}