https://leetcode.com/problems/two-sum-ii-input-array-is-sorted
- 오름차순 배열이다.
- 합 중 가장 앞 인덱스 두개의 합이 가장 작다.
- 합 중 가장 뒷 인덱스 두개의 합이 가장 크다.
➡️ 인덱스로 값이 target 과 비슷해지게 조절할 수 있다.🧐 투포인터를 활용하자
left = 0
right = 마지막 인덱스
while(left < right){
합 = numbers[left] + numbers[right]
if(합 == target){
return 답
}
else if(합 > target){
right--
} else {
left++
}
}
public int[] twoSum(int[] nums, int target) {
int l = 0, r = nums.length - 1;
while (nums[l] + nums[r] != target) {
if (nums[l] + nums[r] < target) l++;
else r--;
}
return new int[] {l+1, r+1};
}
두 값의 합이 target 이 되는 인덱스가 반드시 존재한다는 조건을 잘 활용해서 나보다 훨씬 간결하게 코드를 작성했다.
나도 조건을 잘 살펴야할 것 같다