Skip to content

Latest commit

 

History

History
73 lines (50 loc) · 1.41 KB

136_只出现一次的数字.md

File metadata and controls

73 lines (50 loc) · 1.41 KB

题目

136. 只出现一次的数字

labuladong 题解思路

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

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

示例 1 :

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

示例 2 :

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

示例 3 :

输入:nums = [1]
输出:1

提示:

  • 1 <= nums.length <= 3 * 104
  • -3 * 104 <= nums[i] <= 3 * 104
  • 除了某个元素只出现一次以外,其余每个元素均出现两次。

代码

class Solution {
    public int singleNumber(int[] nums) {
        if(nums.length==1) return nums[0];
        int res =0 ;
        for(int i : nums){
            res^=i;
        }
        return res;
    }
}

go

func singleNumber(nums []int) int {
    res:=0
    for _,val :=range nums{
        res^=val
    }
    return res
}

思路

利用位运算 , 对于一个数字 n, 必然存在n^n ==0

我们通过0来对每一个元素进行 异或 , 最后剩余的就是那个元素