2023年4月8日leetcode练习心得

Posted on 2023-04-08 17:50  玄灵镜  阅读(24)  评论(1)    收藏  举报

给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。

 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/single-number-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

此题与昨天两个题目都有所不同,数组中有两个只出现一次的数字,便不能在用之前与的方法,或计算各个特殊比特位的方法了,但是可以换一种思路,先找出两个只出现一次的数字相互异或的结果,之后用这个结果依次

&(1<<i),i>0&&i<32.这个i作为两个数相异的标志可以把数组分为两组,每组分别有一个只出现一次的数,之后再用两个数分别异或两组数,最后得到两个只出现一次的数.

数组中的数字按位与(1<<i)为一的分为第一组,为零的第二组,每组中有一个只

                                                                                                                                                                出现一次的数字,再用num1,num2异或每组所有的数,得到两个只出现一次的数

两次循环分别得到所有数字异或的结果和分离两个数字的标志i.

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3