题解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

一、解题思路

  1. 在列表中找到两个数的下标,所以要遍历列表,下标和值存储在哈希表中
  2. 遍历列表时,查找diff是否存在字典中
  3. 如果存在,就说明找到了目标值,输出[哈希表中存储的下标 + 1, 当前遍历的下标 + 1]
  4. 如果diff在哈希表没找到,将现在的元素(作为健)和下标(作为值)存在哈希表中

二、举一反三

  1. 分析问题特点:首先,需要仔细阅读题目,理解题目要求和约束条件。这有助于选择最适合的算法和数据结构。
  2. 识别数据结构:根据问题特点,确定适用于该问题的数据结构。例如,哈希表(字典)、集合、栈、队列、双向链表等。数据结构的选择应考虑问题的实际需求和计算复杂性。
  3. 选择算法:针对问题需求选择恰当的算法。例如,双指针、滑动窗口、递归、动态规划、回溯等。从输入数据的规模和题目的特点出发,寻求时间复杂度和空间复杂度的平衡。
  4. 处理边界情况:确保解决方案能正确处理特殊输入和边界情况。例如,数组为空、数组长度为1、目标值在数组中不存在等。
  5. 优化解法:在实现一个正确的解法后,考虑优化算法的时间复杂度和空间复杂度。寻求提高程序运行速度和减少内存占用的方法。
算法学习分析与整理 文章被收录于专栏

个人学习算法的文档整理与思考,举一反三,相爱相杀。

全部评论
在字典中,你想要什么就把这个放到值的位置上,哪些需要计算的位置放在key上
点赞 回复 分享
发布于 2023-08-24 21:38 北京

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务