两数之和
Two Sum
开始编码实现 solution(nums: list[int], target: int) -> list[int]。给定整数数组 nums 和整数 target,返回数组中两个不同元素的下标,使其对应的值之和等于 target。
示例:solution([2, 7, 11, 15], 9) 返回 [0, 1],因为 nums[0] + nums[1] = 2 + 7 = 9。
需要明确的细节:恰好存在唯一答案,因此无需处理无解情况;同一个元素不能使用两次(两个下标必须不同);返回的下标对必须按升序排列([i, j] 且 i < j),精确比较。
朴素做法逐对检查为 O(n^2),在 len(nums) 接近 100000 的隐藏用例上会超时。单次遍历时把每个已见过的值的下标存入哈希表,即可在 O(1) 内查到所需补数 target - nums[i],整体 O(n) 时间、O(n) 空间。
约束条件
- 2 <= len(nums) <= 100000
- -1000000000 <= nums[i] <= 1000000000,-2000000000 <= target <= 2000000000
- 恰好存在一对满足条件的不同下标
- 返回两个 0 基下标,按升序排列;精确比较
样例
Case 1 · statement example
输入: [[2,7,11,15],9]
期望: [0,1]
nums[0]+nums[1]=2+7=9,返回 [0,1]。
Case 2 · visible: pair not at the front
输入: [[3,2,4],6]
期望: [1,2]
2+4=6,下标 [1,2]。
Case 3 · visible: equal values form the pair
输入: [[3,3],6]
期望: [0,1]
两个 3 相加为 6,下标 [0,1]。
Case 4 · visible: negatives
输入: [[-1,-2,-3,-4,-5],-8]
期望: [2,4]
-3 + -5 = -8,下标 [2,4]。
Case 5 · visible: zeros sum to zero
输入: [[0,4,3,0],0]
期望: [0,3]
0+0=0,唯一一对在下标 [0,3]。
最近提交
还没有提交记录。
编码区
实现 solution(...)。本地运行当前支持 Python 可见样例;服务端提交会运行可见样例和隐藏测试。
默认展示公开样例。点击「运行样例」后会在这里显示实际输出;点击「提交评测」会进入隐藏测试。
Case 1 · statement example
输入: [[2,7,11,15],9]
期望: [0,1]
nums[0]+nums[1]=2+7=9,返回 [0,1]。
Case 2 · visible: pair not at the front
输入: [[3,2,4],6]
期望: [1,2]
2+4=6,下标 [1,2]。
Case 3 · visible: equal values form the pair
输入: [[3,3],6]
期望: [0,1]
两个 3 相加为 6,下标 [0,1]。
Case 4 · visible: negatives
输入: [[-1,-2,-3,-4,-5],-8]
期望: [2,4]
-3 + -5 = -8,下标 [2,4]。
Case 5 · visible: zeros sum to zero
输入: [[0,4,3,0],0]
期望: [0,3]
0+0=0,唯一一对在下标 [0,3]。