算法笔记1(两数之和) | 2025-03-02
🎯 今日挑战
题目名称: 1. 两数之和
难度: ⭐️
标签: 数组
哈希表
提交次数: 3次(记录调试次数)
🚀 解题历程
💡 初始思路
1 | # 暴力解法 - 初版 |
测试用例失败:
- 输入:
nums = [3,3], target = 6
- 预期输出:
[0,1]
- 实际输出:
[0,1]
✅ - 但时间复杂度 O(n²) 导致在 10^4 数据量时超时 ❌
🔄 优化路径
关键突破:发现哈希表可以实现 O(1) 时间查找补数
实现方案:
- 创建空字典存储已遍历数值
- 遍历时计算补数(target - current)
- 检查补数是否存在于字典
1 | # 优化版核心逻辑 |
🛑 遇到的坑
重复元素处理
- 初始版本处理
nums = [3,3]
时正常,但哈希表方案需要覆盖写入:1
seen[num] = i # 允许覆盖相同值的最新索引
- 初始版本处理
索引顺序问题
- 必须返回
[seen[complement], i]
确保顺序正确
- 必须返回
边界条件
- 增加空输入校验:
1
2if not nums:
return []
- 增加空输入校验:
🌟 最终实现
✅ 通过代码
1 | def twoSum(nums: List[int], target: int) -> List[int]: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 无深~博客!