
주어진 1-인덱스 배열인 numbers는 이미 비내림차순으로 정렬되어 있습니다. 특정한 목표 숫자를 만들기 위해 두 숫자를 찾으세요. 이 두 숫자를 numbers[index1]과 numbers[index2]라고 하겠습니다. 여기서 1 <= index1 < index2 < numbers.length입니다.
index1과 index2의 인덱스를 1씩 증가시킨 정수 배열 [index1, index2]로 반환하세요. 이 배열의 길이는 2입니다.
테스트는 정확히 하나의 해결책이 존재하도록 생성됩니다. 동일한 요소를 두 번 사용할 수 없습니다.
해결책은 상수의 추가 공간만 사용해야 합니다.
예시 1:
입력: 숫자 = [ 2 , 7 ,11,15], 대상 = 9
출력: [1,2]
설명: 2와 7의 합은 9입니다. 따라서 인덱스 1 = 1, 인덱스 2 = 2입니다. [ 1, 2].
예시 2:
입력: 숫자 = [ 2 ,3, 4 ], 대상 = 6
출력: [1,3]
설명: 2와 4의 합은 6입니다. 따라서 인덱스 1 = 1, 인덱스 2 = 3. [1, 3을 반환합니다. ].
예시 3:
입력: 숫자 = [ -1 , 0 ], 대상 = -1
출력: [1,2]
설명: -1과 0의 합은 -1입니다. 따라서 인덱스 1 = 1, 인덱스 2 = 2입니다. [1, 2]를 반환합니다.
제약:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int start = 0;
int end = numbers.length - 1;
int[] re = new int[2];
while(start < end){
int hap = numbers[start] + numbers[end];
if(hap == target){
re[0] = start +1;
re[1] = end +1;
break;
}
else if (hap > target)
end--;
else
start++;
}
return re;
}
}