136.只出现一次的数字Java
题目描述
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
输入输出样式
示例1:
输入: [2,2,1]
输出: 1
示例2:
输入: [4,1,2,1,2]
输出: 4
本题来自LeetCode:https://leetcode-cn.com/problems/single-number/
思路
利用异或运算的性质:a ^ b ^ a = b。也就是说同一个数字异或两次就抵消了,将数组所有数组异或到一起,只出现过一次的数字,其他出现过两次的数字都抵消了。
算法分析
时间复杂度O(n),空间复杂度为O(1)
求解函数
class Solution {
public int singleNumber(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length; ++i) {
sum ^= nums[i];
}
return sum;
}
}