题目描述:求数组中只出现一次的数字

i c } m l p a o s r s f } t u F n F o c o r v f } r u 4 a a o e n 0 p r r t d S p u a o e n i n r t l a n i u r = i ^ o t O n = n n i n n o c u 1 n n e m . u ( s . m { _ [ < s 0 n [ n ] u i u m ] m s s . : c o [ u I n n t t ] { ) I n t {

算法思想:这是假设数组中只出现一次的数字只有一个,那就直接异或,最后的这个数就是结果。 如果只出现一次的数字有两个呢?那就先异或,得出两个数的异或结果,然后从低位向高位找第一个为1的位。然后根据这一位为1和0把数组分成两组,然后两组数分别异或,就得出最后的结果了。因为异或,不同才为1。所以找不为1的那位,也就证明两个数在那一位肯定不同,所以能把两个数分到不同的数组。

github地址:https://github.com/cubegao/LeetCode