题目解析
题目描述:
给定一个整数数组 inp,找出数组中唯一出现的元素(即只出现一次的元素),并返回该元素。
思路:
-
异或操作特性:
- 异或操作(XOR)满足交换律和结合律,即
a ^ b ^ a = b。 - 如果一个数与自己进行异或操作,结果为0,即
a ^ a = 0。 - 如果一个数与0进行异或操作,结果仍为原数,即
a ^ 0 = a。
- 异或操作(XOR)满足交换律和结合律,即
-
解题步骤:
- 初始化一个变量
result为0。 - 遍历数组中的每个元素,将
result与当前元素进行异或操作。 - 由于成对出现的元素会相互抵消,最终
result中存储的就是唯一出现的元素。
- 初始化一个变量
图解:
假设输入数组为 [1, 1, 2, 2, 3, 3, 4, 5, 5]:
-
初始
result = 0 -
遍历数组:
result = 0 ^ 1 = 1result = 1 ^ 1 = 0result = 0 ^ 2 = 2result = 2 ^ 2 = 0result = 0 ^ 3 = 3result = 3 ^ 3 = 0result = 0 ^ 4 = 4result = 4 ^ 5 = 1result = 1 ^ 5 = 4
-
最终
result = 4
代码详解:
python复制代码
def solution(inp):
result = 0
for num in inp:
result ^= num # 使用异或操作
return result
result ^= num等价于result = result ^ num,表示将result与num进行异或操作,并将结果存回result。
知识总结
新知识点:
-
异或操作(XOR) :
- 符号:
^ - 特性:满足交换律和结合律,成对出现的元素会相互抵消。
- 符号:
理解:
异或操作在处理成对出现的元素时非常高效,因为它利用了异或操作的特性,使得成对出现的元素在异或操作中相互抵消,最终留下唯一出现的元素。
学习建议:
- 深入理解异或操作的特性,尝试解决一些与异或操作相关的题目。
- 熟练掌握异或操作在数组、字符串等数据结构中的应用。
学习计划
制定刷题计划:
-
基础阶段:
- 每天刷5道基础题目,巩固算法和数据结构的基础知识。
- 每周总结一次,梳理本周学习的知识点和遇到的难题。
-
进阶阶段:
- 每天刷3道中等难度的题目,挑战自己的思维极限。
- 每周至少解决一道难题,并撰写解题思路和代码详解。
-
冲刺阶段:
- 每天刷2道高难度题目,模拟比赛环境。
- 每周进行一次模拟比赛,检验自己的学习效果。
利用错题进行针对性学习:
- 将错题整理成错题本,分析错误原因和解题思路。
- 针对错题涉及的知识点进行专项练习,直到熟练掌握。
工具运用
结合AI刷题功能:
- 利用AI刷题功能,快速获取题目和解题思路。
- 将AI提供的解题思路与自己的思路进行对比,找出差距并改进。
结合其他学习资源:
- 观看算法和数据结构的视频教程,加深对知识点的理解。
- 阅读相关的书籍和博客文章,拓宽视野和思路。
- 参加线上编程社区和论坛的讨论,与同行交流学习心得和经验。
通过以上方法,我们可以更加高效地利用豆包MarsCode AI刷题功能,提升自己的编程能力和算法思维。