LeetCode 136 – 只出现一次的数字

题目描述

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

题目分析

使用异或运算符,每位相同为0,相异为1。
多个数字连续异或,交换顺序不影响结果。
最终只出现一次的数字会被保留下来。

Java

public int singleNumber(int[] nums) {
    int ans = 0;
    for (int num : nums) {
        ans = ans ^ num;
    }
    return ans;
}

Kotlin

fun singleNumber(nums: IntArray): Int {
    var ans = 0
    for (num in nums) {
        ans = ans xor num
    }
    return ans
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部