给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
说明:
- 返回的下标值(index1 和 index2)不是从零开始的。
- 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:
输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2
解答:思路类似于两数之和 1
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
# 用len()方法取得nums列表长度
n = len(nums)
# 创建一个空字典
d = {}
for x in range(n):
a = target - nums[x]
# 字典d中存在nums[x]时
if nums[x] in d:
return d[nums[x]], x+1
# 否则往字典增加键/值对
else:
d[a] = x+1
# 边往字典增加键/值对,边与nums[x]进行对比
本文介绍了一种解决有序数组中寻找两数之和等于目标数的问题的方法。通过使用字典来存储数值及其对应的索引,算法能在O(n)的时间复杂度内找到满足条件的两个数的索引。
222

被折叠的 条评论
为什么被折叠?



