136. 只出现一次的数字简单异或
Posted pre_eminent
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了136. 只出现一次的数字简单异或相关的知识,希望对你有一定的参考价值。
题目:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。
找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
思路:
1. 任何数和 0 做异或运算,结果仍然是原来的数
2. 任何数和其自身做异或运算,结果是 0
3. 异或运算满足交换律和结合律
解法:
/**
* @param number[] nums
* @return number
*/
var singleNumber = function(arr)
const len = arr.length;
// 线性复杂度:一轮遍历
// 不使用额外空间,只能使用原数组
// 使用异或
// 1. 任何数和 0 做异或运算,结果仍然是原来的数
// 2. 任何数和其自身做异或运算,结果是 0
// 3. 异或运算满足交换律和结合律
let result = 0;
for(let i = 0; i < len; i++)
result = result ^ arr[i];
return result;
;
以上是关于136. 只出现一次的数字简单异或的主要内容,如果未能解决你的问题,请参考以下文章