July 29, 2023
감소하지 않는 순서로 정렬된 정수 배열이 주어졌을 때, 주어진 목표 값의 시작과 끝 위치를 구합니다.
배열에서 목표값을 찾을 수 없으면 [-1, -1]을 반환합니다.
런타임 복잡도가 O(log n)인 알고리즘을 작성해야 합니다.
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]Input: nums = [], target = 0
Output: [-1,-1]제약 조건:
0 <= nums.length <= 105-109 <= nums[i] <= 109nums is a non-decreasing array.-109 <= target <= 109투 포인터를 사용하여 left 는 배열의 첫 인덱스 부터 right 는 배열의 끝 인덱스 부터 하나씩 찾으면서 진행합니다.
function solution(nums, target) {
if (nums.length === 0) {
return [-1, -1];
}
let left = 0;
let right = nums.length - 1;
while(left <= right) {
if (nums[left] === target && nums[right] === target) {
return [left, right];
}
if (nums[left] !== target) {
left++;
}
if (nums[right] !== target) {
right--;
}
}
return [-1, -1];
};