只出现一次的数字 LeetCode136

题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

要求:你的算法需要线性时间复杂度

最近在推文上看到这道题还蛮多人分享的,还是一道比较高频的算法题,所以咱也来凑凑热闹,如果你要是还没做过,真的可以去做做。

提交链接:

给你点机会,不看题解,先写一下?

还是直接看题解?

找出数组中唯一出现一次的数字_数组

相信你已经做出来了。下面分享下当时我做这道题的思路,最后的思路,我一开始还真没想到,还是看了下题解,阿巴阿巴…

思路

首先,这肯定是先想到暴力呀,没有什么是两层for解决不了, 直接冲

果然,过了

找出数组中唯一出现一次的数字_其它_02

一看,不对劲,怎么才5%;

优化

我们可以采用哈希表记录每个元素出现的次数,应该会比暴力快很多,再冲,又过啦

找出数组中唯一出现一次的数字_其它_03

好像哈希表也是不太行,最终采用异或大法,成功在线性时间复杂度下查找出该元素

找出数组中唯一出现一次的数字_算法_04

总结

分享一道题,最近看到的频率比较高,就写了一下,我觉得代码应该不用贴,应该大家都会写的…