题目描述
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
题目分析
使用异或运算符,每位相同为0,相异为1。
多个数字连续异或,交换顺序不影响结果。
最终只出现一次的数字会被保留下来。
Java
public int singleNumber(int[] nums) {
int ans = 0;
for (int num : nums) {
ans = ans ^ num;
}
return ans;
}
Kotlin
fun singleNumber(nums: IntArray): Int {
var ans = 0
for (num in nums) {
ans = ans xor num
}
return ans
}