leetcode136. 只出现一次的数字|刷题打卡

76 阅读1分钟

leetcode136. 只出现一次的数字

题目描述:

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

说明:

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

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

代码模版(swift)

class Solution {
    func singleNumber(_ nums: [Int]) -> Int {

    }
}

思路(位运算)

将所有数字进行异或运算最后得到的值是只出现一次的数字,不使用额外空间。

两个相同的数异或结果为0,0与任何数异或结果为该数,异或运算遵从交换律。

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

本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情