167. 2つの数値の合計II-順序付けられた配列の入力
難易度:シンプル
昇順で配置された順序付けられた配列を前提として、合計がターゲットの数値と等しくなるように2つの数値を見つけます。
関数は2つの添え字値1とindex2を返す必要があります。ここで、index1はindex2より小さい必要があります。
説明:
- 返される添え字値(index1とindex2)はゼロベースではありません。
- 各入力は一意の回答にのみ対応すると想定でき、同じ要素を再利用することはできません。
例:
输入: numbers = [2, 7, 11, 15], target = 9
输出: [1,2]
解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。
解決
リストは昇順で並べ替えられているため、ダブルポインターを使用して両側をクリックします。合計が小さい場合は左のポインターが右に移動し、合計が大きい場合は右のポインターが左に移動します((
class Solution(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
l=0;r=len(numbers)-1
while l<r:
if numbers[l]+numbers[r]==target:
return ([l+1,r+1])
elif numbers[l]+numbers[r]>target:
r-=1
else:
l+=1