在数组中寻找目标值的两个整数:Python 实现

    在编程面试和算法学习中,寻找数组中和为特定目标值的两个整数是一个经典问题。本文将详细介绍这个问题的背景、解法以及 Python 实现。

问题描述

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

示例

输入: nums = [2, 7, 11, 15], target = 9
输出: [0, 1]
解释: nums[0] + nums[1] = 2 + 7 = 9, 所以返回 [0, 1].

解题思路

我们可以使用几种不同的方法来解决这个问题,最常见的有以下两种:

  1. 暴力法:使用双重循环遍历所有可能的组合,检查每对数字的和是否等于目标值。这种方法的时间复杂度为 O(n^2),在数据量较大时效率较低。

  2. 哈希表法:使用一个哈希表(字典)来存储数组中的数字及其索引。在遍历数组时,我们可以通过查找目标值与当前数字的差值是否存在于哈希表中来判断是否找到了一对数字。此方法的时间复杂度为 O(n),效率更高

Python 实现

这里我们将实现哈希表法,代码如下:

def two_sum(nums, target):
    # 创建一个空字典来存储数字及其索引
    num_map = {}
    
    # 遍历数组
    for i, num in enumerate(nums):
        # 计算与当前数字配对的目标值
        complement = target - num
        
        # 检查差值是否在字典中
        if complement in num_map:
            return [num_map[complement], i]  # 返回两个数的索引
        
        # 如果没有找到,将当前数字及其索引存入字典
        num_map[num] = i
    
    return None  # 如果没有找到,返回 None

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

代码解析

  1. 创建字典:我们首先创建一个空字典 num_map,用于存储已遍历数字的值和索引。

  2. 遍历数组:使用 enumerate 函数遍历 nums 数组,同时获取每个数字的索引。

  3. 计算补数:对于每个数字 num,计算它的补数 complement,即 target - num

  4. 查找补数:检查补数是否存在于 num_map 中。如果存在,说明找到了两个数字,返回它们的索引。

  5. 更新字典:如果补数不存在,将当前数字及其索引存入字典 num_map

  6. 返回结果:如果遍历完整个数组都没有找到,返回 None

 

总结

在这篇文章中,我们探讨了如何在数组中寻找和为目标值的两个整数。通过使用哈希表,我们能够有效地解决这个问题,时间复杂度为 O(n)。这种方法不仅高效,而且易于实现。

希望这篇博客能帮助你理解这个经典问题及其解决方案!如果你有任何问题或想法,欢迎在评论区留言。

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值