在有序数组中找出两个数,使它们的和为 target。 输入: numbers={2, 7, 11, 15}, target=9 输出: [1,2]python
时间: 2024-09-23 11:03:15 浏览: 24
这是一个经典的“双指针”问题,通常在动态规划或者哈希表解决。在Python中,你可以采用以下步骤:
```python
def twoSum(nums, target):
# 创建一个空字典用于存储已查找过的数字和其索引
num_dict = {}
# 定义两个指针,left初始指向数组开始,right初始指向数组结束
left, right = 0, len(nums) - 1
while left < right:
# 计算当前两个数的和
current_sum = nums[left] + nums[right]
# 如果和等于目标值,返回左右指针对应的元素
if current_sum == target:
return [nums[left], nums[right]]
# 和小于目标值,左指针向右移动(增大和)
elif current_sum < target:
left += 1
# 和大于目标值,右指针向左移动(减小和)
else:
right -= 1
# 没有找到符合条件的数对,返回空列表
return []
# 测试输入
numbers = [2, 7, 11, 15]
target = 9
result = twoSum(numbers, target)
print(result) # 输出: [2, 7]
```
阅读全文