Leetcode--260. 只出现一次的数字Ⅲ
计算异或结果:首先,我们对数组中的所有元素进行异或操作,得到一个结果 提取最低位:接下来,我们找到 分组处理:将数组中的元素分为两组,分别对应于最低位为0和1的元素。然后,对每组进行异或操作,得到两个结果,这两个结果就是我们要找的两个出现一次的元素。 计算异或结果:遍历数组,计算所有元素的异或结果 提取最低位:使用 分组处理:遍历数组中的每个元素,检查其是否等于结果数组中的一个元素。如果是,进行异或操作,更新结果数组中的值。否则,将其异或到另一个结果中。 返回结果:返回结果数组,包含两个出现一次的元素。
发布日期:2021-04-30 21:04:46
浏览次数:66
分类:精选文章
本文共 823 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要找出整数数组中恰好出现一次的两个元素。我们可以利用异或操作的性质来高效地解决这个问题,并且确保算法在时间和空间复杂度上都是线性的。
方法思路
a。这个结果a实际上是两个出现一次的元素的异或结果。a的最低位是否为1。如果是,我们可以利用这个位来分组处理数组中的元素。这种方法利用了异或操作的性质,使得时间复杂度保持为O(n),并且空间复杂度为O(1)。
解决代码
def single_numbers(nums): a = 0 for num in nums: a ^= num # 提取a的最低位 a ^= (a & -a) # 初始化结果数组 result = [0, 0] # 遍历数组中的每个数 for num in nums: if (a ^ num) == 0: result[0] ^= num else: result[1] ^= num return result
代码解释
a。这个结果a是两个出现一次的元素的异或结果。a & -a来提取a的最低位。这个操作使得a的最低位被清零。这种方法确保了在O(n)的时间复杂度内解决问题,并且仅使用常数额外空间。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月06日 00时06分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php数组去重复数据的小例子
2023-03-01
php数组实现:哈希 +双向链表
2023-03-01
PHP数组排序函数array_multisort()函数详解(二)
2023-03-01
php数组的几个函数和超全局变量
2023-03-01
PHP文件上传详解
2023-03-01
PHP文件锁
2023-03-01
php文本框输入制定文本,php – 当用户没有向文本框输入任何内容时...
2023-03-01
PHP时间戳和日期相互转换操作总结
2023-03-01
php时间戳知识点,php 时间戳函数总结与示例
2023-03-01
php更新数据库失败,php – 无法更新MySQL数据库
2023-03-01
php机器人聊天对话框,基于AIML的PHP聊天机器人
2023-03-01
PHP查找数组中最大值与最小值
2023-03-01
php查最大值,在PHP数组中查找最大值
2023-03-01
php根据年月日计算年龄
2023-03-01
RabbitMQ - 单机部署(超详细)
2023-03-01
php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
2023-03-01
php模拟发送GET和POST请求
2023-03-01
RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
2023-03-01
php模板引擎smarty
2023-03-01