[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 }

 

相关题目

136. Single Number

137. Single Number II

260. Single Number III

LeetCode 题目总结

posted @ 2020-04-02 01:35  CNoodle  阅读(472)  评论(0编辑  收藏  举报