DDSA Solutions

Search in a Row-Column sorted matrix

Time: O(n+m)
Space: O(1)
Advertisement

Intuition

Search in matrix where each row and column is sorted. Start from top-right corner.

Algorithm

  1. 1Start at (0, n-1). If target == mat[r][c]: found. If target < mat[r][c]: c--. If target > mat[r][c]: r++.

Common Pitfalls

  • Same as LC 240. O(m+n) staircase search. Each step eliminates a row or column.
Search in a Row-Column sorted matrix.java
Java
// Approach: Start from top-right corner. Move left if current > target, move down if current < target.
// Time: O(n+m) Space: O(1)
class Solution {
    public static boolean matSearch(int mat[][], int x) {
        for (int i = 0; i < mat.length; i++) {
            int low = 0, high = mat[i].length - 1;
            if (mat[i][low] <= x && mat[i][high] >= x) {

                while (low <= high) {
                    int mid = (low + high) / 2;
                    if (mat[i][mid] == x)
                        return true;
                    else if (mat[i][mid] > x)
                        high = mid - 1;
                    else
                        low = mid + 1;

                }
            }

        }
        return false;
    }
}
Advertisement
Was this solution helpful?