题解02 | #两数之和#
两数之和
https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # @param numbers int整型一维数组 # @param target int整型 # @return int整型一维数组 from typing import List class Solution: def twoSum(self , numbers: List[int], target: int) -> List[int]: new_dir={} for index,value in enumerate(numbers): diff= target-value if diff in new_dir: return [new_dir[diff]+1,index+1] new_dir[value]=index
一、解题思路
- 在列表中找到两个数的下标,所以要遍历列表,下标和值存储在哈希表中
- 遍历列表时,查找diff是否存在字典中
- 如果存在,就说明找到了目标值,输出[哈希表中存储的下标 + 1, 当前遍历的下标 + 1]
- 如果diff在哈希表没找到,将现在的元素(作为健)和下标(作为值)存在哈希表中
二、举一反三
- 分析问题特点:首先,需要仔细阅读题目,理解题目要求和约束条件。这有助于选择最适合的算法和数据结构。
- 识别数据结构:根据问题特点,确定适用于该问题的数据结构。例如,哈希表(字典)、集合、栈、队列、双向链表等。数据结构的选择应考虑问题的实际需求和计算复杂性。
- 选择算法:针对问题需求选择恰当的算法。例如,双指针、滑动窗口、递归、动态规划、回溯等。从输入数据的规模和题目的特点出发,寻求时间复杂度和空间复杂度的平衡。
- 处理边界情况:确保解决方案能正确处理特殊输入和边界情况。例如,数组为空、数组长度为1、目标值在数组中不存在等。
- 优化解法:在实现一个正确的解法后,考虑优化算法的时间复杂度和空间复杂度。寻求提高程序运行速度和减少内存占用的方法。
算法学习分析与整理 文章被收录于专栏
个人学习算法的文档整理与思考,举一反三,相爱相杀。