[leetcode, JS] 374. Guess Number Higher or Lower

mxxn·2023년 8월 22일
0

leetcode

목록 보기
40/198

문제

문제 링크 : Guess Number Higher or Lower

풀이

/** 
 * Forward declaration of guess API.
 * @param {number} num   your guess
 * @return 	     -1 if num is higher than the picked number
 *			      1 if num is lower than the picked number
 *               otherwise return 0
 * var guess = function(num) {}
 */

/**
 * @param {number} n
 * @return {number}
 */
var guessNumber = function(n) {
    for(let i=1; i<=n; i++) {
        if(guess(i) === 0) return i
    }
    
};
  1. for문으로 진행
  2. runtime 효율성 떨어짐
  • Runtime 10042 ms, Memory 42 MB

다른 풀이

/** 
 * Forward declaration of guess API.
 * @param {number} num   your guess
 * @return 	     -1 if num is higher than the picked number
 *			      1 if num is lower than the picked number
 *               otherwise return 0
 * var guess = function(num) {}
 */

/**
 * @param {number} n
 * @return {number}
 */
var guessNumber = function(n) {
    let left = 1, right = n
    while (left < right) {
        const mid = left + Math.floor((right - left) / 2)
        const current = guess(mid)
        if (current === 0) return mid
        if (current === -1) right = mid
        else left = mid + 1
    }
    return left
};
  1. 주어진 수 n의 반을 쪼개어 값을 구함
profile
내일도 글쓰기

0개의 댓글