leet code binary search

2024. 11. 20. 19:52boj

Intuition

단순하게,  while.문을 돌면서 중앙의 값이 현재 찾고자 하는 값이 맞는지를 체크하고 

아니라면 계속 반복문을 돌도록 함, 만약, 반복문이 끝나도 찾지못한다면 -1 을 리턴하면 간단하게 해결가능하다

Approach

change s and e before finding target
when s bigger than e but cannot find then return -1;

Complexity

  • Time complexity:
    O(logN)
  • Space complexity:
    O(1)

    Code

function search(nums: number[], target: number): number {
  let s = 0;
  let e = nums.length - 1;

  if (nums[s] === target) {
    return s;
  }
  if (nums[e] === target) {
    return e;
  }

  while (s <= e) {
    const mid = s + Math.floor((e - s) / 2);
    if (nums[mid] === target) {
        return mid; 
    }
    if (nums[mid] > target) {
        e = mid - 1;
    } else {
        s = mid + 1;
    }
  }
  return -1;
};

'boj' 카테고리의 다른 글

First Bad Version  (0) 2024.12.11
두개의 스택으로 하나의 큐 만들기  (0) 2024.12.11
leet code invert binary tree  (0) 2024.11.16
valid palindrome  (0) 2024.11.14
leet code valid-parentheses  (4) 2024.11.13