[LeetCode] 136. Single Number
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.
只出现一次的数字。
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/single-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题意是在数组里面,所有数字都成对出现,只有一个数字出现了一次。找出这个“单身”的数字。思路是用位运算的异或(XOR)。异或的特点是,当两个相同数字异或的时候结果是0;一个数字异或0,得到它本身。本题应用的是异或的第一个特性,代码如下
JavaScript实现
1 /** 2 * @param {number[]} nums 3 * @return {number} 4 */ 5 var singleNumber = function(nums) { 6 let res = nums[0]; 7 for (let i = 1; i < nums.length; i++) { 8 res ^= nums[i]; 9 } 10 return res; 11 };
Java实现
1 class Solution { 2 public int singleNumber(int[] nums) { 3 int res = 0; 4 for (int num : nums) { 5 res ^= num; 6 } 7 return res; 8 } 9 }
相关题目