找出数组中唯一出现一次的数字
只出现一次的数字 LeetCode136
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
要求:你的算法需要线性时间复杂度
最近在推文上看到这道题还蛮多人分享的,还是一道比较高频的算法题,所以咱也来凑凑热闹,如果你要是还没做过,真的可以去做做。
提交链接:
给你点机会,不看题解,先写一下?
还是直接看题解?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNLsBS8d-1649603630115)(C:\Users\大勇\AppData\Roaming\Typora\typora-user-images\image-20220410225755236.png)]](https://img-blog.csdnimg.cn/4ea84b51e80b459cbd92f35331a9d8d9.png)
相信你已经做出来了。下面分享下当时我做这道题的思路,最后的思路,我一开始还真没想到,还是看了下题解,阿巴阿巴…
思路
首先,这肯定是先想到暴力呀,没有什么是两层for解决不了, 直接冲
果然,过了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxdigITN-1649603630117)(C:\Users\大勇\AppData\Roaming\Typora\typora-user-images\image-20220410230351438.png)]](https://img-blog.csdnimg.cn/edc377f09d014c6eac4e6936f7fad60c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6P6L-c5Y2B5LiA5Yag546L,size_19,color_FFFFFF,t_70,g_se,x_16)
一看,不对劲,怎么才5%;
优化
我们可以采用哈希表记录每个元素出现的次数,应该会比暴力快很多,再冲,又过啦
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ZXzXg3Z-1649603630118)(C:\Users\大勇\AppData\Roaming\Typora\typora-user-images\image-20220410230802325.png)]](https://img-blog.csdnimg.cn/f6f7e71d996b4d2084ca1b41c546c838.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6P6L-c5Y2B5LiA5Yag546L,size_19,color_FFFFFF,t_70,g_se,x_16)
好像哈希表也是不太行,最终采用异或大法,成功在线性时间复杂度下查找出该元素
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udmcfTwz-1649603630119)(C:\Users\大勇\AppData\Roaming\Typora\typora-user-images\image-20220410230942708.png)]](https://img-blog.csdnimg.cn/87e38d21e1a84bb58d671324fbafc33b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6P6L-c5Y2B5LiA5Yag546L,size_20,color_FFFFFF,t_70,g_se,x_16)
总结
分享一道题,最近看到的频率比较高,就写了一下,我觉得代码应该不用贴,应该大家都会写的…

浙公网安备 33010602011771号