Drill

ProblemsJavaScript › patterns

Where a value slots in

mediumpatternsBinary searchArraysJavaScript

A timeseries store keeps an array sorted and needs to know exactly where a new reading would land on insertion.

insertPosition(values: list<int>, target: int) → int

Solve it in the editor →

Where you start

function insertPosition(values, target) {
  
}

Worked examples

CallResult
insertPosition([1,3,5,6], 5)2
insertPosition([1,3,5,6], 2)1
insertPosition([1,3,5,6], 7)4
insertPosition([1,3,5,6], 0)0

Hint

A lower-bound binary search: hold a window in two indices and ask which half the value must fall in.

Reference solution in JavaScript
function insertPosition(values, target) {
  let lo = 0, hi = values.length;
  while (lo < hi) {
    const mid = (lo + hi) >> 1;
    if (values[mid] < target) lo = mid + 1;
    else hi = mid;
  }
  return lo;
}

The same problem in another language

More patterns problems in JavaScript