All files / leetCode 0167.ts

100% Statements 16/16
100% Branches 8/8
100% Functions 1/1
100% Lines 16/16

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 24 25  6x   6x 6x   6x 13x 13x 1x 12x 1x 11x 4x 7x 2x   5x 5x       6x    
export default function twoSum(numbers: number[], target: number): number[] {
  const res: number[] = []
 
  let lo = 0
  let hi = numbers.length - 1
 
  while (lo < hi) {
    const mid = lo + ((hi - lo) >> 1)
    if (numbers[lo] + numbers[mid] > target) {
      hi = mid - 1
    } else if (numbers[hi] + numbers[mid] < target) {
      lo = mid + 1
    } else if (numbers[lo] + numbers[hi] < target) {
      lo++
    } else if (numbers[lo] + numbers[hi] > target) {
      hi--
    } else {
      res.push(lo + 1, hi + 1)
      break
    }
  }
 
  return res
}