Skip to contentSkip to editor
All posts
4 min read

Binary Search Beyond Sorted Arrays

Binary search is really about shrinking monotonic search space. Learn the interview framework for answer-space search, boundaries, and proofs of correctness.

binary searchpatternsinterview prepproblem solving

Most candidates think binary search means "sorted array with left, right, and mid." That view is too narrow, and it is exactly why these questions can feel inconsistent in interviews.

Binary search is not an array trick. It is a decision framework for any problem where the search space can be halved based on a monotonic condition.

Once you understand that, a lot of "hard" interview questions become pattern recognition instead of guesswork.

The Real Pattern: Search on a Monotonic Predicate

The key question is not "is the input sorted?" The key question is:

Can I define a yes/no test where answers switch from false to true exactly once (or true to false once)?

If yes, you can binary search on that boundary.

Examples:

  • Smallest eating speed so Koko finishes bananas in time.
  • Minimum capacity to ship packages within D days.
  • First bad version in a sequence of versions.
  • Minimum feasible value under a resource constraint.

In all cases, you are not searching values directly. You are searching the first point where feasibility changes.

A Framework You Can Apply in 90 Seconds

Use this checklist before writing code:

  1. Define search space: what are low and high bounds?
  2. Define predicate: what does can(mid) mean?
  3. Check monotonicity: if can(x) is true, is can(x+1) always true (or the opposite)?
  4. Pick target boundary: first true, last true, first false, or last false?
  5. Lock invariants: what does left guarantee and what does right guarantee?

This removes most confusion around off-by-one errors because you are proving behavior, not memorizing templates.

Boundary Types You Must Distinguish

A lot of interview failures happen because candidates solve "a" binary search, not the correct boundary search.

Question styleBoundary typeMovement when predicate true
Minimum feasible valuefirst truemove right = mid
Maximum feasible valuelast truemove left = mid (upper mid)
First occurrence in sorted datafirst true/equal boundarymove right toward mid
Last occurrence in sorted datalast true/equal boundarymove left toward mid

If you name the boundary out loud before coding, your implementation decisions become clear immediately.

Why Candidates Still Struggle

Even when people know binary search conceptually, they freeze under pressure for three reasons.

Reason 1: Unclear invariant

If you cannot state what left and right mean at any moment, you cannot reason about updates.

Reason 2: Predicate not isolated

Trying to mix predicate logic with pointer movement creates noise. Write can(mid) as its own clean function mentally, even if you inline later.

Reason 3: No sanity simulation

One quick dry run with a tiny input often catches wrong boundaries in under 30 seconds.

Pattern-first prep addresses this by drilling boundary families, not isolated prompts. Sophocode organizes this directly: you practice "first true" and "last true" variants side by side so the structure becomes obvious.

Interview Communication Script

If you want interviewer confidence early, narrate this sequence:

  • "I am binary searching answer space from L to R."
  • "Predicate is can(x) meaning the constraint is satisfiable at x."
  • "Predicate is monotonic because if x works, any larger x also works."
  • "So I need first true; when mid works, I keep mid and move right boundary left."

This script is short and high-signal. It shows you are not guessing.

Converting Brute Force to Binary Search

A useful interview move: start with linear scan over answer space, then optimize.

For example, if you can test every speed from 1 to max speed and find the first valid one, that is O(range _ checkCost). If validity is monotonic, replace linear scan with binary search and reduce to O(log range _ checkCost).

Interviewers love this transition because it mirrors real engineering optimization: start with a correct baseline, then exploit structure.

Practice Strategy That Builds Transfer

Do not practice only "search in sorted array" style prompts. Build by tiers:

  1. Tier 1: classic array boundary search.
  2. Tier 2: rotated arrays and peak finding.
  3. Tier 3: answer-space feasibility problems.
  4. Tier 4: mixed constraints where predicate cost is non-trivial.

After each problem, write one line: "My boundary type was __, and my invariant was __." This reflection step turns fragile memory into reusable skill.

That is the core idea behind sophocode's pattern-first flow: teach the decision layer first, then implementation speed.

When Not to Use Binary Search

Pattern maturity also means saying no when structure is missing.

If predicate is not monotonic, binary search is invalid. If bounds are undefined or huge without meaningful feasibility checks, forcing binary search can be slower and bug-prone than alternatives.

Being able to reject the pattern is part of mastering the pattern.

Practice next