Swift.数组中只出现一次的数字

cubegao 2017-05-02 PM 388℃ 0条
题目描述:求数组中只出现一次的数字
import Foundation

class For40Solution {
    func appearOnce(_ nums: [Int]) -> Int {
        
        var n = nums[0]
        for i in 1..<nums.count {
            n ^= nums[i]
        }
        
        return n
    }
}

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

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

标签: 算法

非特殊说明,本博所有文章均为博主原创。

评论啦~