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

62 阅读4分钟

题目解析:选择“两数之和”题目

题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

思路

  1. 哈希表法:利用哈希表(字典)来存储数组元素的值和对应的索引。在遍历数组时,检查 target - nums[i] 是否已经在哈希表中,如果在,则返回两个索引;如果不在,则将当前元素及其索引加入哈希表。
  2. 暴力法:双重循环遍历数组,检查每对元素之和是否等于目标值。这种方法时间复杂度较高,为 O(n^2),不适合大数据集。

图解
假设数组为 [2, 7, 11, 15],目标值为 9

  • 遍历到 2 时,检查 9-2=7 是否在哈希表中,不在,将 (2, 0) 加入哈希表。
  • 遍历到 7 时,检查 9-7=2 是否在哈希表中,存在(索引为 0),返回 [0, 1]

代码详解(Python,哈希表法):

python复制代码
	def two_sum(nums, target):

	    # 创建哈希表

	    num_to_index = {}

	    # 遍历数组

	    for i, num in enumerate(nums):

	        # 计算需要找的另一个数

	        complement = target - num

	        # 检查另一个数是否在哈希表中

	        if complement in num_to_index:

	            # 返回两个数的索引

	            return [num_to_index[complement], i]

	        # 将当前数及其索引加入哈希表

	        num_to_index[num] = i

	    # 如果没有找到,返回一个空列表或抛出异常

	    return []

	 

	# 示例测试

	nums = [2, 7, 11, 15]

	target = 9

	print(two_sum(nums, target))  # 输出: [0, 1]

知识总结

新知识点

  • 哈希表:一种高效的数据结构,用于快速查找数据。在 Python 中,通常使用字典来实现哈希表。
  • 枚举(enumerate) :Python 内置函数,用于在遍历列表时同时获取元素的索引和值。

理解
哈希表通过键值对的方式存储数据,使得查找操作的时间复杂度可以降低到 O(1)。在本题中,利用哈希表存储数组元素的值和索引,可以极大地提高查找效率。

学习建议

  • 入门同学应先理解哈希表的基本原理和操作方法,再通过实际题目练习加深理解。
  • 多尝试不同的解题方法,比较它们的时间复杂度和空间复杂度,培养优化意识。

学习计划

制定刷题计划

  1. 设定目标:明确每天/每周的刷题数量和目标难度。
  2. 分类练习:按照题型或知识点分类进行练习,如数组、链表、哈希表等。
  3. 逐步进阶:从简单题开始,逐渐增加难度,避免一开始就挑战过难的题目。

利用错题进行针对性学习

  1. 整理错题:将做错的题目记录下来,包括错误原因和正确解法。
  2. 定期复习:定期回顾错题,确保不再犯同样的错误。
  3. 寻求帮助:对于难以理解的题目,可以查阅资料或向他人请教。

工具运用

将 AI 刷题功能与其他学习资源相结合

  1. 结合视频教程:在观看数据结构与算法的视频教程后,通过 MarsCode AI 刷题功能进行巩固练习。
  2. 利用论坛讨论:在刷题过程中遇到问题,可以在 MarsCode 的社区论坛中发帖求助,与其他用户交流心得。
  3. 参加挑战赛:参与 MarsCode 的编程挑战赛,检验自己的学习成果,同时锻炼解决问题的能力。

学习建议

  • 定期评估:通过参加模拟考试或挑战赛来评估自己的学习进度和水平。
  • 保持兴趣:选择自己感兴趣的题目和领域进行深入研究,保持学习的热情和动力。
  • 分享经验:将自己的学习经验和解题技巧分享给他人,不仅可以帮助他人,也能加深自己的理解。