首页 > 其他分享 >LeetCode Hot100-哈希-两数之和

LeetCode Hot100-哈希-两数之和

时间:2024-03-31 16:34:09浏览次数:26  
标签:target nums 索引 num Hot100 哈希 dict LeetCode 两数

题目描述:

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

解题思路:

为了找到和为目标值的两个数,我们可以遍历数组,并使用哈希表来存储每个元素的值及其对应的索引。在遍历的过程中,我们检查哈希表中是否存在当前元素对应的目标值与当前元素之差(即另一个数),如果存在,则返回这两个数的索引。

具体步骤如下:

  1. 初始化一个空的哈希表 num_dict,用于存储数组中每个元素的值及其对应的索引。
  2. 遍历数组 nums,对于每个元素 num 和其索引 index,执行以下操作:
    • 计算目标值与当前元素之差 diff,即 diff = target - num
    • 检查 diff 是否在哈希表 num_dict 中,如果在,则返回 diff 对应的索引和当前元素的索引。
    • 否则,将当前元素的值及其索引存储到哈希表 num_dict 中。
  3. 如果遍历结束后仍未找到符合条件的两个数,则返回空列表。

Python 代码实现如下:

def two_sum(nums, target):
    # 初始化哈希表
    num_dict = {}
    
    # 遍历数组
    for index, num in enumerate(nums):
        # 计算目标值与当前元素之差
        diff = target - num
        
        # 检查差值是否在哈希表中
        if diff in num_dict:
            # 如果在,返回差值对应的索引和当前元素的索引
            return [num_dict[diff], index]
        
        # 否则,将当前元素的值及其索引存储到哈希表中
        num_dict[num] = index
    
    # 如果遍历结束仍未找到符合条件的两个数,则返回空列表
    return []

# 测试示例
nums1 = [2, 7, 11, 15]
target1 = 9
print(two_sum(nums1, target1))  # 输出: [0, 1]

nums2 = [3, 2, 4]
target2 = 6
print(two_sum(nums2, target2))  # 输出: [1, 2]

nums3 = [3, 3]
target3 = 6
print(two_sum(nums3, target3))  # 输出: [0, 1]

以上代码实现了在给定数组中寻找两个数的索引,使其和等于目标值的功能。

标签:target,nums,索引,num,Hot100,哈希,dict,LeetCode,两数
From: https://blog.csdn.net/qq_60618042/article/details/137027866

相关文章

  • LeetCode刷题记录——day9
    https://leetcode.cn/problems/game-of-life/?envType=study-plan-v2&envId=2024-spring-sprint-100先创建一个数组,让它比原数组大一圈,然后将其全设为0,在原数组中每有一个1出现,就将其对应位置的新数组的周围全部加一,最后新数组中对应位置的数字就是其周围有多少个活细胞classSo......
  • LeetCodeHot100 二叉树 94. 二叉树的中序遍历 104. 二叉树的最大深度 101. 对称二
    94.二叉树的中序遍历https://leetcode.cn/problems/binary-tree-inorder-traversal/description/?envType=study-plan-v2&envId=top-100-liked//递归//List<Integer>resList;//publicList<Integer>inorderTraversal(TreeNoderoot){//re......
  • LeetCode 84. 柱状图中最大的矩形
    解题思路单调栈经典题型,这道题我们需要找到heights[i]左边的最近的比heights[i]小的值,找到heights[i]右边的最近的比heights[i]小的值。所以我们想到了单调栈。相关代码classSolution{publicintlargestRectangleArea(int[]heights){intn=h......
  • 力扣HOT100热题宝典--第4节
    ......
  • java数据结构与算法刷题-----LeetCode1091. 二进制矩阵中的最短路径
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录广度优先+双分裂蛇广度优先+双分裂蛇双分裂蛇:是求二维表中从起点到终点的经典思路(也是......
  • java数据结构与算法刷题-----LeetCode95. 不同的二叉搜索树 II
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录分治回溯+记忆化搜索分治回溯+记忆化搜索卡特兰数,例如对于n个进栈元素,有多少种出栈顺序,......
  • 矩阵置零 - LeetCode 热题 18
    大家好!我是曾续缘......
  • 缺失的第一个正数 - LeetCode 热题 17
    大家好!我是曾续缘......
  • Leetcode算法训练日记 | day9
    一、实现strStr函数1.题目Leetcode:第28题给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回 -1。示例1:输入:haystack="sadbutsad",needle="sad"输......
  • Leetcode1681-模拟,位运算
    题目链接:https://leetcode.cn/problems/count-the-number-of-consistent-strings/description/32位int构造出现过的字符集合位运算解法:用按位或(|)构造1个32位的数字集合A存用过的字符,此时对目标串构造字符集合B(有B是A子集,A∪B=A),注意运算优先级 题目:给你一个由不同字符......