题目
给你一个下标从 1 开始的整数数组 ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 的两个数。
如果设这两个数分别是 和 ,则 。
以长度为 的整数数组 形式返回这两个整数的下标 和 。
你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
你所设计的解决方案必须只使用常量级的额外空间。
解题
def two_sum(numbers, target):
left = 0
right = len(numbers) - 1
while left < right:
current_sum = numbers[left] + numbers[right]
if current_sum == target:
return [left + 1, right + 1] # 下标从1开始
elif current_sum < target:
left += 1
else:
right -= 1
# 测试例子
numbers = [2, 7, 11, 15]
target = 9
result = two_sum(numbers, target)
print("满足条件的下标:", result)
满足条件的下标: [1, 2]