2023年4月8日leetcode练习心得

Posted on   玄灵镜  阅读(14)  评论(1编辑  收藏  举报

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

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

 

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

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

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

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

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

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

 

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

随笔 - 53, 文章 - 0, 评论 - 0, 阅读 - 1857

Copyright © 2025 玄灵镜
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示