Class Solution
Medium
You are given an m x n integer matrix matrix with the following two properties:
- Each row is sorted in non-decreasing order.
- The first integer of each row is greater than the last integer of the previous row.
Given an integer target, return true if target is in matrix or false otherwise.
You must write a solution in O(log(m * n)) time complexity.
Example 1:

Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
Output: true
Example 2:

Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
Output: false
Constraints:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 100-104 <= matrix[i][j], target <= 104
To solve the “Search a 2D Matrix” problem in Java with the Solution class, follow these steps:
- Define a method
searchMatrixin theSolutionclass that takes a 2D integer matrixmatrixand an integertargetas input and returnstrueif the target value is found in the matrix, otherwise returnsfalse. - Initialize two pointers
rowandcolto start at the top-right corner of the matrix.rowstarts from 0 andcolstarts from the last column. - Loop until
rowis less than the number of rows in the matrix andcolis greater than or equal to 0:- If
matrix[row][col]is equal to the target, returntrue. - If
matrix[row][col]is greater than the target, decrementcol. - If
matrix[row][col]is less than the target, incrementrow.
- If
- If the target is not found after the loop, return
false.
Here’s the implementation of the searchMatrix method in Java:
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length;
int n = matrix[0].length;
int row = 0;
int col = n - 1;
while (row < m && col >= 0) {
if (matrix[row][col] == target) {
return true;
} else if (matrix[row][col] > target) {
col--;
} else {
row++;
}
}
return false;
}
}
This implementation searches for the target value efficiently in the given matrix by starting from the top-right corner and moving either left or down based on the comparison with the target value. The time complexity of this solution is O(m + n), where m is the number of rows and n is the number of columns in the matrix.
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
searchMatrix
public boolean searchMatrix(int[][] matrix, int target)
-