不重复int数组里找不存在的值
生活随笔
收集整理的這篇文章主要介紹了
不重复int数组里找不存在的值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有這么一道題,一個int數組叫A,里面的數是不重復的,從中拿出一個值,剩下的數組就B,問拿出的是哪個數。
一般人都能想到把A數組值相加,假設和為sum1,再把B數組值相加,設其和為sum2,sum1-sum2就是拿出的數。當初manager面我是,我就是這么回答的,心里還想怎么這么簡單的題目還問(當時他出的int數組是從1到10的)。
其實這道題是有陷阱的啊,因為int數組值相加,可能會溢出!還好manager的數組是從1到10,不可能溢出。
對上面的方法有個改進的方法,就是對A中值相加時,每加一個值就減去B中的一個值,這樣可以減少溢出的可能性。
但是改進過的方法還是有可能溢出,下面列出一個方法,不會有溢出:
離散數學里,大家都學過xor,異或,兩個相同的值異或,值是0,兩個不同的值異或,值是1,0和任何數異或都是那個數,0和0異或是0,0和1異或是1。
所以對于上面的題,我們定義一個int值,就叫xor吧,把A中每個值用循環異或一下賦以xor,再用xor去異或B中的每個值,做完后,xor就是拿出來的數。
轉載于:https://www.cnblogs.com/iwteih/archive/2010/03/16/1687230.html
總結
以上是生活随笔為你收集整理的不重复int数组里找不存在的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi关于多线程同步的一些方法
- 下一篇: 100325 雨