基础数据结构之哈希表:两数之和(LeetCode 1 简单题)

这是LeetCode的第一题,也是哈希表应用的经典例子。

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

优化思路

● 暴力解法: O(n²),两层循环

● 哈希表: O(n),用空间换时间,只需遍历一次

暴力解法

python 复制代码
# 暴力解法
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(0,n-1):
            for j in range(i+1,n):
                if nums[i] + nums[j] == target:
                    return[i,j]

哈希表

python 复制代码
# 方法:数组中的每个数挨个看我的小本本上有没有记录让这俩数结合起来得到最终值,
    # 1.1有则说明这俩数已经找到了。
    # 1.2没则说明这个数还没,那我就存到小本子上,直到我所有的数都存到小本子上。
# 如果到所有数都记到本子上也没发现俩数满足要求,那说明这个数组就找不到
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hash = {}
        for i,num in enumerate(nums):
            completion = target - num
            if completion in hash:
                return [hash[completion],i]
            hash[num] = i
相关推荐
hh随便起个名10 小时前
力扣二叉树的三种遍历
javascript·数据结构·算法·leetcode
xie_pin_an12 小时前
深入浅出 C 语言数据结构:从线性表到二叉树的实战指南
c语言·数据结构·图论
tang&12 小时前
滑动窗口:双指针的优雅舞步,征服连续区间问题的利器
数据结构·算法·哈希算法·滑动窗口
LYFlied13 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
Nandeska14 小时前
2、数据库的索引与底层数据结构
数据结构·数据库
一起养小猫15 小时前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
yaoh.wang15 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
又是忙碌的一天15 小时前
二叉树的构建与增删改查(2) 删除节点
数据结构
Code Slacker15 小时前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode
yaoh.wang16 小时前
力扣(LeetCode) 27: 移除元素 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·双指针