Python 中求两数之和
假设我们有一个整数数组。我们必须返回两个整数的索引,如果把它们相加,我们会到达一个特定的目标,该目标也是给定的。在这里,我们将做一个假设,即数组中始终存在唯一解,因此不存在同一目标的两组索引。
例如,假设数组像 A = [2, 8, 12, 15],目标和为 20。然后它将返回索引 1 和 2,因为 A[1] + A[2] = 20。
为了解决这个问题,我们将循环遍历数组中的每个元素。因此,按照以下步骤解决此问题。
- 定义一个映射来保存结果,称为 res
- 对范围 0 到 n - 1 内的索引 i(其中 n 是数组中的元素数)
- 如果目标 - A[i] 在 res 中
- 返回 res[target - A[i]] 和 i 作为索引
- 否则将 i 放入 res 作为 res[A[i]] − = i
- 如果目标 - A[i] 在 res 中
让我们看看实现情况以获得更好的理解
示例
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ required = {} for i in range(len(nums)): if target - nums[i] in required: return [required[target - nums[i]],i] else: required[nums[i]]=i input_list = [2,8,12,15] ob1 = Solution() print(ob1.twoSum(input_list, 20))
输入
input_list = [2,8,12,15] target = 20
输出
[1, 2]
广告