#01 简单

题目描述

给定一个整数列表和一个目标值,找出列表中和为目标值的两个数的索引。你可以假设每种输入只会对应一个答案,且同一元素不能使用两次。

示例

输入:nums = [2, 7, 11, 15], target = 9

输出:[0, 1] (因为 nums[0] + nums[1] = 2 + 7 = 9)

提示

使用字典记录每个数字的索引,遍历列表时检查 target - num 是否在字典中。

参考答案

def two_sum(nums, target):
    """两数之和"""
    seen = {}  # {数值: 索引}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], i]
        seen[num] = i
    return []

# 测试
print(two_sum([2, 7, 11, 15], 9))  # [0, 1]
print(two_sum([3, 2, 4], 6))       # [1, 2]
print(two_sum([3, 3], 6))          # [0, 1]