20220912 - 136. Single Number 位运算

88 阅读1分钟

Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.

You must implement a solution with a linear runtime complexity and use only constant extra space.

Example 1:

Input: nums = [2,2,1]
Output: 1

Example 2:

Input: nums = [4,1,2,1,2]
Output: 4

Example 3:

Input: nums = [1]
Output: 1

  Constraints:

  • 1 <= nums.length <= 3 * 104
  • -3 * 104 <= nums[i] <= 3 * 104
  • Each element in the array appears twice except for one element which appears only once.

Solution

int singleNumber(int* nums, int numsSize){
    int i, sum = 0;
    for (i = 0; i < numsSize; i++) {
        sum ^= nums[i];
    }
    return sum;
}

不断异或,相同的元素异或出来是 0 ,0 与任何元素异或都是元素本身,由异或的交换律,整个数组元素异或完后就会只剩下那个单出来的元素。

题目链接: 136. 只出现一次的数字 - 力扣(LeetCode)