74. Search a 2D Matrix

Description

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

  • Integers in each row are sorted from left to right.

  • The first integer of each row is greater than the last integer of the previous row.

Example 1:

Example 2:

Constraints:

  • m == matrix.length

  • n == matrix[i].length

  • 1 <= m, n <= 100

  • -104 <= matrix[i][j], target <= 104

Tags

Binary Search, Array

Solution

This is a 2D version of Binary Search problem. Based on the Binary Search template, we only need to convert any 1D index to 2D, with the formula below, so that we can position that element in the given matrix.

Flattened1DArray[i]=2DMatrix[i/cols][i(modcols)]Flattened1DArray[i] = 2DMatrix[i/cols][i\pmod{cols}]

Complexity

  • Time complexity: O(log(n))O(log(n))

  • Space complexity: O(1)O(1)

Code

Last updated

Was this helpful?