← 返回编程题库
coding-two-sum简单免费版2000ms未尝试

两数之和

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 可见样例;服务端提交会运行可见样例和隐藏测试。

加载编辑器...
计时0:00

默认展示公开样例。点击「运行样例」后会在这里显示实际输出;点击「提交评测」会进入隐藏测试。

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]。