当前位置: 首页 > article >正文

找到⽆序数组中只出现一次的一个数

  文心快码(BaiduComate)是基于百度文心大模型,在研发全流程全场景下为开发者提供辅助建议的智能代码助手。结合百度积累多年的编程现场大数据、外部优秀开源数据,可为开发者生成更符合实际研发场景的优秀代码,提升编码效率,释放“十倍”软件生产力。

📮如果您对【文心快码企业版】感兴趣,或希望获取更多详细信息,请直接📩私信我们~

我们会尽快安排专业人员与您取得联系!我们期待与您建立联系,为您的企业带来更高效、更智能的工作体验。

🔍【大厂面试真题】系列,带你攻克大厂面试真题,秒变offer收割机!

❓今日问题:找到⽆序数组中只出现一次的一个数

❤️一起看看文心快码Baidu Comate给出的答案吧!如果这个问题你也会,也可以在评论区写出你的答案哦~

@comate

为了在给定的无序数组中找到出现一次的数字,而其他数字都出现两次,我们可以使用位运算的异或(XOR)操作。异或运算有一个有趣的特性:对于任何数x,都有x ^ x = 0,x ^ 0 = x。即任何数和其自身异或的结果为0,任何数和0异或的结果还是它本身。

算法步骤如下:

初始化一个变量(比如叫singleNumber)为0,用于存储异或的结果。

遍历数组中的每一个元素,将每个元素与singleNumber进行异或操作,并将结果存回singleNumber。

由于数组中的其他数字都出现了两次,所以它们在进行异或操作时会相互抵消变成0。而那个只出现一次的数字会与0进行异或,结果仍然是它本身。

当遍历完整个数组后,singleNumber中存储的就是那个只出现一次的数字。

以下是该算法的Python实现:


def singleNumber(nums):
    singleNumber = 0
    for num in nums:
        singleNumber ^= num
    return singleNumber

# 示例
nums = [2, 2, 1]  # 假设这是你的输入数组
print(singleNumber(nums))  # 输出应为 1,因为1只出现了一次
这个算法的时间复杂度是O(n),因为我们遍历了整个数组一次。而空间复杂度是O(1),因为我们只使用了一个额外的变量来存储异或的结果。这满足了题目要求的时间复杂度和空间复杂度。


http://www.kler.cn/news/366618.html

相关文章:

  • IPC 进程间通信 信号量集合 Linux环境 C语言实现
  • 【Linux】线程池详解及其基本架构与单例模式实现
  • 在 Spring 中使用 @Cacheable 和 @CacheEvict
  • demo说明
  • cpp的vector类
  • Rust初踩坑
  • python之数据结构与算法(数据结构篇)-- 元组
  • 怎么把flv格式转换成mp4?将flv格式换成MP4格式的简单方法
  • JDK9——JDK13新特性总结
  • MySQL企业常见架构与调优经验分享
  • C#通过异或(^)运算符制作二进制加密(C#实现加密)
  • 基于SpringBoot的高校体测管理系统设计与实现(源码+定制+开发)高校体测记录系统设计、高校体测信息管理平台、智能体测管理系统开发、高校体测记录系统设计
  • 跨境科技公司如何借助 NocoBase 升级内部系统并实现外部业务增长?
  • Python监听指定路径下文件夹变化
  • Mac上面压缩文件出现__MACOSX文件夹问题
  • web查询数据库
  • SSRF实战:利用ssrf.php对自己内网网站尝试访问
  • 信号(三)【信号保存】
  • nuxt3项目创建
  • 【C++进阶篇】——STL的简介
  • 用友U8接口-库存管理(7)
  • HTML 区块
  • sql-labs靶场第二十关测试报告
  • 【Linux】从open到write:系统文件I/O 的奥秘与实战指南
  • 实测体验Claude 3.5升级版:AI首次实现直接操控电脑!
  • 【Linux】信号量,线程池