Skip to content

[Leetcode] 704. Binary Search ​

#이진탐색

Problem ​

Leetcode algorithm study plan > 문제 링크

μ •λ ¬λœ λ°°μ—΄μ€‘μ—μ„œ νƒ€κ²Ÿκ°’κ³Ό μΌμΉ˜ν•˜λŠ” κ°’μ˜ μœ„μΉ˜λ₯Ό 찾아라. O(log n)으둜

Solution ​

O(log n)으둜 ν’€μ–΄μ•Όν•˜λŠ” λ¬Έμ œμ΄λ―€λ‘œ 이진탐색을 μ΄μš©ν•œλ‹€.

이진탐색 쑰건쀑인 λ°°μ—΄μ˜ μ •λ ¬μƒνƒœλ₯Ό ν™•μΈν•œλ‹€.

이진탐색은 λ°°μ—΄μ˜ 값이 λ‘κ°œκ°€ λ‚¨μ•˜μ„λ•Œ midλŠ” 항상 μ™Όμͺ½μ„ λ°”λΌλ³΄κ²Œλœλ‹€λŠ” 쑰건을 μ΄μš©ν•΄μ„œ λ¬΄ν•œλ£¨ν”„κ°€ λŒμ§€μ•Šκ²Œ νƒ€κ²Ÿμ„ 였λ₯Έμͺ½μΈλ±μŠ€λ‘œ λ§žμΆ°μ„œ 쑰건을 μ§œλ©΄λœλ‹€.

JS Code ​

javascript
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {
    let answer = -1
    
    let left = 0, right = nums.length -1
    while(left < right) {
        let mid = Math.floor((left+right) / 2)
        
        if (nums[mid] < target) left = mid + 1
        else right = mid
    }
    
    if (nums[right] === target) answer = right
    
    return answer
};