题目描述:
给你一个 非空 整数数组 nums
,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
解题思路:
看到数组刚开始想的是排序后遍历,但是时间复杂度太高了。题目中提示线性时间复杂度,想到了异或的位运算,其实题目中给了提示。只有一个元素出现了一次,其余都是出现了两次。我们又知道,对于异或运算来说。两数相同为0,不同为1。这样我们遍历异或运算最后得到的结果就是0和出现一次元素进行异或。
实现代码:
class Solution {
int ans=0;
public int singleNumber(int[] nums) {
for(int i=0;i<nums.length;i++)
{
ans=ans^nums[i];
}
return ans;
}
}
标签:题目,数字,int,复杂度,元素,力扣,异或,136,出现
From: https://blog.csdn.net/m0_64774409/article/details/142298666