首页 > 编程语言 > 详细

LeetCode只出现一次的数字Swift

时间:2020-12-16 15:26:18      阅读:28      评论:0      收藏:0      [点我收藏+]

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1


示例 2:

输入: [4,1,2,1,2]
输出: 4

 

思路:

异或运算
a^0 = a、a^a = 0、a^b^a = b。
这个公示满足交换律 ==> a^b^a = a^a^b = 0^b = b
由于重复出现的次数均为2次。给所有的元素做异或运算,在通过交换率的可以得出 ==> 0^0^0...^a(i), a(i)就是那个只出现一次的数

 

class Solution {
    func singleNumber(_ nums: [Int]) -> Int {
        var res = 0
        for value in nums {
            res = res ^ value
        }
        return res
    }
}

 

LeetCode只出现一次的数字Swift

原文:https://www.cnblogs.com/huangzs/p/14143118.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!