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

文心快码(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),因为我们只使用了一个额外的变量来存储异或的结果。这满足了题目要求的时间复杂度和空间复杂度。
相关推荐
商业讯网112 分钟前
国家电投海外项目运营经验丰富
大数据·人工智能·区块链
石云升38 分钟前
谁来负责企业落地AI?
aigc·openai·ai编程
薛定谔的猫198239 分钟前
llama-index Embedding 落地到 RAG 系统
开发语言·人工智能·python·llama-index
gorgeous(๑>؂<๑)42 分钟前
【西北工业大学-邢颖慧组-AAAI26】YOLO-IOD:实时增量目标检测
人工智能·yolo·目标检测·计算机视觉·目标跟踪
飞哥数智坊1 小时前
TRAE 国际版限免开启!一份给新手的入门说明书
人工智能·ai编程·trae
翱翔的苍鹰1 小时前
神经网络中损失函数(Loss Function)介绍
人工智能·深度学习·神经网络
老蒋每日coding1 小时前
AI智能体设计模式系列(三)—— 并行化模式
langchain·ai编程
深情的小陈同学1 小时前
工作学习笔记 —— 支持手机端的添加表单行操作
笔记·学习·ai编程
狼爷1 小时前
【译】Skills 详解:Skills 与 prompts、Projects、MCP 和 subagents 的比较
人工智能·aigc
元智启1 小时前
企业AI应用面临“敏捷响应”难题:快速变化的业务与相对滞后的智能如何同步?
人工智能·深度学习·机器学习