一道算法题:1...N中缺一个数,怎么找出来?

976阅读 0评论2011-05-03 lys5300
分类:

前几天参加一个面试,栽在这道题上。
题目:已知有整数1...N(在一个数组中),其中有一个数字缺失,怎么找出来?
我给出的算法是:把给定数组中的数字加起来得到sum,然后用1...N的和减去sum就可以得到缺失的数字了。
这时,面试官问:“如果N很大,这个方法会不会出问题?”
我回答:“加法可能会溢出。”
之后,面试官给出了正确的方法,用XOR操作而不是加法。
后来,我仔细想了一下。其实用加法也是没有问题的。尽管可能溢出,但是,无论溢出与否,最后都会得到正确的结果。关键在于:在计算机中,整数的加法运算满足交换律和结合律。
上一篇:编程思想和编程语言
下一篇:Linux下查看文件编码,转换编码