704. Binary Search (javascript)

Hong GilSeong·2021년 1월 23일
0

LeetCode

목록 보기
2/3

난이도 이지 정답률 54%

타겟에 맞는 인덱스값을 반환하면 되는 문제입니다. 그냥 바이너리서치를 구현하면 되는 문제입니다. 제가 재귀함수로 해봤는데 런타임이 떠서 while문으로 풀었습니다.

Example 1:

Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4

Example 2:

Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums so return -1

문제풀이

let search = function(nums, target){
	let start = 0;
    let end = nums.length-1; // 마지막 인덱스번호
    while(start <= end){ // start < end가 아닌 이유 배열을 1개를 받을 때도 사용하게
    	let pivot = Math.floor((start+end)/2); // 배열의 중간값 계산
        if(nums[pivot] === target){
        	return pivot; // 인덱스값 반환
        }else if(nums[pivot] > target){
        	end = pivot - 1; // 중간값이 크면 중간 기준에서 왼쪽만 검사
        }else{
        	start = pivot + 1;// 중간값이 작으면 중간 기준에서 오른쪽만 검사
        }
    }
	return -1; // 없으면 -1 리턴
}
profile
알고리즘가지고놀때까지

0개의 댓글

관련 채용 정보