Description
https://leetcode.com/problems/single-number/
题目大意:
给定一个非空的整数数组,数组中除了一个数字外,其它数字都出现了两次,要求在线性时间、无额外辅助空间的条件下找出这个只出现了一次的数字。
Solving Ideas
位运算
0^a=a
a^a=0
根据位运算的特点,可以知道,当我们对数组元素依次进行异或运算后,所有出现偶数次的数字经过计算后都等于0,最终只剩下只出现一次的数字。
Solution
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
for (int item : nums) {
res ^= item;
}
return res;
}
}