Search in 2D matrix - II

Asked atAdobeAmazonMakeMyTrip
1Give yourself 5 minutes
2Answer out loud, not in your head
3Then compare with the answer below

The problem

Given a 2D array matrix where each row is sorted in ascending order from left to right and each column is sorted in ascending order from top to bottom, write an efficient algorithm to search for a specific integer target in the matrix.

Input: matrix = [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ], target = 5 Output: True Explanation: The target 5 exists in the matrix in the index (1,1)

Input: matrix= [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ], target = 20 Output: False Explanation: The target 20 does not exist in the matrix.

Input: matrix= [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ], target = 1

  • n == matrix.length
  • m == matrix[i].length
  • 1 <= n, m <= 300
  • -109 <= matrix[i][j] <= 109
  • All the integers in each row are sorted in ascending order.
  • All the integers in each column are sorted in ascending order.
  • -109 <= target <= 109

cpp

class Solution{
public:
 bool searchMatrix(vector<vector<int>> &matrix, int target){
      
    }
};

java

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
      
    }
}

python

class Solution:
    def searchMatrix(self, matrix, target):

javascript

class Solution {
    searchMatrix(matrix, target) {
 
    }
}

csharp

public class Solution {
    public bool SearchMatrix(List<List<int>> matrix, int target) {
        
    }
}

go

func searchMatrix(matrix [][]int, target int) bool {
    //your code goes here
}
Stuck? Show a way to structure it+
  1. 01Start at the top-right or bottom-left corner.
  2. 02Move left when the current value is too large and down when it is too small.
  3. 03Stop on equality or after leaving the matrix.
  4. 04Use a corner with opposite monotonic directions, such as top right.

Reference answer

Then expect these follow-ups

  • What changes if each row is sorted but columns are not?

    Tests: requirements

  • Why is top-right a useful starting corner?

    Tests: elimination proof

Hiring now

Adobe has 203 open roles right now

landed applies to roles like these for you, on each company’s own site, with answers written for the role.

Get 5x interviews10 free auto-applies. No card.
  • 2027 Intern- Software Engineer

    Yerevan

  • Software Engineer - Adobe Experience Platform (RTCDP)

    Bucharest

  • 2027 Intern - Solutions Consulting

    Paris

Or practice this question first

Next question