LeetCode 题目:两个总和

LeetCode 题目:两个总和

在这里插入图片描述

描述:

编写一个函数,输入为一个整数数组nums和一个目标整数target,要求找到数组中两个数的和等于target,并返回这两个数的索引。

函数定义:

def two_sum(nums: List[int], target: int) -> List[int]:

说明:

  • 假设对于每个输入,都存在一个解决方案。
  • 同一个元素不能被重复使用。
  • 可以以任意顺序返回答案。

示例:

# 示例 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]
解释: 因为 nums[1] + nums[2] == 6,所以返回 [1, 2]# 示例 3:
nums = [3, 3]
target = 6
输出: [0, 1]
解释: 因为 nums[0] + nums[1] == 6,所以返回 [0, 1]

实现:

def two_sum(nums: List[int], target: int) -> List[int]:
    # 创建一个字典来存储元素的索引
    num_indices = {}

    # 遍历数组
    for i, num in enumerate(nums):
        # 计算目标差值
        target_diff = target - num

        # 检查差值是否已经在字典中
        if target_diff in num_indices:
            # 如果存在,返回当前索引和差值的索引
            return [num_indices[target_diff], i]
        
        # 将当前元素和索引加入字典
        num_indices[num] = i

    # 如果没有找到解决方案,返回 None
    return None

使用示例:

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

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

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

上述代码定义了一个名为two_sum的函数,它接受一个整数列表nums和一个整数target作为输入,并通过字典来存储和查找能够相加得到目标值的两个数的索引。如果找到符合条件的两个数,函数返回它们的索引;如果不存在这样的两个数,则返回None。通过几个示例,展示了如何使用这个函数来解决实际问题。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴歌声声送我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值