Article start
DSA Course: Interview Patterns and Problem Solving
Module 10: Sorting & Searching

Search a 2D Matrix: Flattened Binary Search Pattern

Binary search a sorted matrix as if it were one sorted array.

May 29, 2026·28

Learning Outcome

After this lesson, you should be able to map a one-dimensional binary-search index into matrix row and column.

Problem Statement

Given a matrix where each row is sorted and each row starts after the previous row ends, return true if target exists.

InputOutputWhy
matrix = [[1,3,5],[7,9,11]], target = 9trueThe target 9 is at row 1, column 1.

Brute Force Approach

Scan every cell in the matrix. This is simple but costs O(rows * cols).

Optimized Approach

Treat the matrix as a virtual sorted array of length rows * cols and binary search over virtual indexes.

Exact Pseudocode

rows = matrix.length
cols = matrix[0].length
l = 0
r = rows * cols - 1
while l <= r:
  mid = l + (r - l) / 2
  row = mid / cols
  col = mid % cols
  value = matrix[row][col]
  compare value with target
return false

Reference Code

class Solution:
    def searchMatrix(self, matrix, target):
        rows, cols = len(matrix), len(matrix[0])
        l = 0
        r = rows * cols - 1

        while l <= r:
            m = (l + r) // 2
            value = matrix[m // cols][m % cols]
            if value == target:
                return True
            if value < target:
                l = m + 1
            else:
                r = m - 1

        return False

Sample Dry Run

StepStateResult
Virtual rangerows=2, cols=3, indexes 0..5Search starts
mid=2matrix[0][2] = 55 < 9, move right
mid=4matrix[1][1] = 9target found
Returntruesearch stops

Complexity

MeasureValueReason
TimeO(log(rows * cols))Binary search halves the virtual matrix range each step.
SpaceO(1)Only indexes are stored.

Edge Cases

  • One-row and one-column matrices still work.
  • Use cols, not rows, for index mapping.
  • Confirm the matrix ordering matches the flattened-array assumption.

Interview Checklist

  • Map row = mid / cols and col = mid % cols.
  • Do not physically flatten the matrix.
  • Use safe midpoint calculation.

FAQs

Why does flattened binary search work?

The prompt guarantees every row starts after the previous row ends, so virtual order is sorted.

What if rows overlap in values?

Then this exact flattened binary search assumption may not hold; use a different matrix search pattern.

What is the core pattern?

Virtual indexing with binary search.

Test your knowledge

Take a quick quiz based on this chapter.

Discussion

0 comments

Sign in to share a question or add to the discussion.
Start the discussion

Ask a question or share what stood out to you.