“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
一、题目描述
- 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
二、思路分析
-
这是一道蛮有意思的题
-
可以有两种思路,一种是hashmap去存取,另一种是按位异或
-
这样如果是相同的数字就会消除
-
最后剩下的那个数字就是单独的数字啦,此题,也是单独记忆即可没有什么难度
三、AC 代码:
class Solution {
public int singleNumber(int[] nums) {
//循环进行异或操作
for(int i = 1;i<nums.length;i++){
nums[0]^=nums[i];
}
//返回值就是只出现一次的数字
return nums[0];
}
}
四、总结:
- 好了,代码撸完,我们
总结一下
:-
首先我们肯定会想到用hashmap去解题,就还蛮简单的
-
这里我们讲一下异或操作
-
相同的数进行异或,最后会消除掉
-
所以剩下来的就是我们要的,只出现一次的数字,有些取巧,并不难,不了解异或的可以查一下。
-