All files / leetCode 0154.ts

100% Statements 16/16
100% Branches 10/10
100% Functions 1/1
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  8x 1x 7x 7x   5x 5x   5x 10x 2x 8x 8x 6x   4x 2x     3x    
export default function findMin(nums: number[]): number {
  if (nums.length < 2)
    return nums[0]
  if (nums.length === 2)
    return Math.min(nums[0], nums[1])
 
  let lo = 0
  let hi = nums.length - 1
 
  while (lo + 1 < hi) {
    if (nums[lo] < nums[hi])
      return nums[lo]
    const mid = lo + ((hi - lo) >> 1)
    if (nums[lo] < nums[mid])
      lo = mid
    else if (nums[lo] > nums[mid])
      hi = mid
    else lo++
  }
 
  return Math.min(nums[lo], nums[hi])
}