青训营X豆包MarsCode 技术训练营| 豆包MarsCode AI 刷题

46 阅读3分钟

题目解析

题目描述
给定一个整数数组 inp,找出数组中唯一出现的元素(即只出现一次的元素),并返回该元素。

思路

  1. 异或操作特性

    • 异或操作(XOR)满足交换律和结合律,即 a ^ b ^ a = b
    • 如果一个数与自己进行异或操作,结果为0,即 a ^ a = 0
    • 如果一个数与0进行异或操作,结果仍为原数,即 a ^ 0 = a
  2. 解题步骤

    • 初始化一个变量 result 为0。
    • 遍历数组中的每个元素,将 result 与当前元素进行异或操作。
    • 由于成对出现的元素会相互抵消,最终 result 中存储的就是唯一出现的元素。

图解
假设输入数组为 [1, 1, 2, 2, 3, 3, 4, 5, 5]

  • 初始 result = 0

  • 遍历数组:

    • result = 0 ^ 1 = 1
    • result = 1 ^ 1 = 0
    • result = 0 ^ 2 = 2
    • result = 2 ^ 2 = 0
    • result = 0 ^ 3 = 3
    • result = 3 ^ 3 = 0
    • result = 0 ^ 4 = 4
    • result = 4 ^ 5 = 1
    • result = 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)

    • 符号:^
    • 特性:满足交换律和结合律,成对出现的元素会相互抵消。

理解
异或操作在处理成对出现的元素时非常高效,因为它利用了异或操作的特性,使得成对出现的元素在异或操作中相互抵消,最终留下唯一出现的元素。

学习建议

  • 深入理解异或操作的特性,尝试解决一些与异或操作相关的题目。
  • 熟练掌握异或操作在数组、字符串等数据结构中的应用。

学习计划

制定刷题计划

  1. 基础阶段

    • 每天刷5道基础题目,巩固算法和数据结构的基础知识。
    • 每周总结一次,梳理本周学习的知识点和遇到的难题。
  2. 进阶阶段

    • 每天刷3道中等难度的题目,挑战自己的思维极限。
    • 每周至少解决一道难题,并撰写解题思路和代码详解。
  3. 冲刺阶段

    • 每天刷2道高难度题目,模拟比赛环境。
    • 每周进行一次模拟比赛,检验自己的学习效果。

利用错题进行针对性学习

  • 将错题整理成错题本,分析错误原因和解题思路。
  • 针对错题涉及的知识点进行专项练习,直到熟练掌握。

工具运用

结合AI刷题功能

  • 利用AI刷题功能,快速获取题目和解题思路。
  • 将AI提供的解题思路与自己的思路进行对比,找出差距并改进。

结合其他学习资源

  • 观看算法和数据结构的视频教程,加深对知识点的理解。
  • 阅读相关的书籍和博客文章,拓宽视野和思路。
  • 参加线上编程社区和论坛的讨论,与同行交流学习心得和经验。

通过以上方法,我们可以更加高效地利用豆包MarsCode AI刷题功能,提升自己的编程能力和算法思维。