LeetCode 167号問題:2つの数の和II-入力秩序配列
タイトルの説明
昇順に配列された秩序配列を指定し、2つの数を見つけて、それらの合計が目標数に等しいようにします.
関数は、index 1とindex 2の2つの下付き値を返す必要があります.index 1はindex 2より小さくなければなりません.
説明:
返される下付きスケール値(index 1およびindex 2)はゼロから始まりません.入力ごとに一意の答えのみが対応し、同じ要素を繰り返し使用できないと仮定できます.例:
入力:numbers=[2,7,11,15]、target=9出力:[1,2]解釈:2と7の和は目標数9に等しい.したがってindex 1=1,index 2=2である.
具体コード
昇順に配列された秩序配列を指定し、2つの数を見つけて、それらの合計が目標数に等しいようにします.
関数は、index 1とindex 2の2つの下付き値を返す必要があります.index 1はindex 2より小さくなければなりません.
説明:
返される下付きスケール値(index 1およびindex 2)はゼロから始まりません.入力ごとに一意の答えのみが対応し、同じ要素を繰り返し使用できないと仮定できます.例:
入力:numbers=[2,7,11,15]、target=9出力:[1,2]解釈:2と7の和は目標数9に等しい.したがってindex 1=1,index 2=2である.
具体コード
public int[] twoSum(int[] numbers, int target) {
if (numbers == null || numbers.length <= 0) {
return null;
}
//
int i = 0, j = numbers.length - 1;
while (i < j) {
int sum = numbers[i] + numbers[j];
if (sum == target) {
return new int[]{i + 1, j + 1};
} else if (sum < target) {
i ++;
} else {
j --;
}
}
return null;
}