Search a 2D Matrix II Total Accepted: 520 Submissions: 1659
Write an efficient algorithm, searches for a value in a m x n matrix. This matrix have the following properties:integers in each row is sorted in ascending from left to right. Integers in each column is sorted in ascending from top to bottom.
For example,
Consider the following matrix:
[
[1, 4, 7, one, a],
[2, 5, 8,, + ],
[3, 6, 9, +, +],
[10, 13, 14, 17, [+],
[approx., max.]
Given Target = 5, return true.
Given Target =, return false. Ideas
This question is a classic problem, I met at Microsoft and Yelp's onsite and the electric plane.
From the upper-right corner, compare the values of target and matrix[i][j]. If it is less than target, the row cannot have this number, so i++; If it is greater than target, the column cannot have this number, so J--. Encountering a boundary indicates that the matrix does not contain a target.
[CODE]
public class Solution {public
Boolean Searchmatrix (int[][] matrix, int target) {
if (matrix.length==0 | | matrix[0 ].length==0) return false;
int i=0, j=matrix[0].length-1;
while (I<matrix.length && j>=0) {
int x = matrix[i][j];
if (target = = x) return true;
else if (target < x)--j;
else ++i;
}
return false;
}
}