Leetcode 240: Search a 2D Matrix II
Search a 2D Matrix IITotal Accepted:
520Total Submissions:
1659
Write an efficient algorithm that searches for a value inMXNMatrix. This matrix has the following properties:
Integers in each row are sorted in ascending from left to right. Integers in each column are sorted in ascending from top to bottom.
For example,
Consider the following 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]]
GivenTarget=5
, Returntrue
.
GivenTarget=20
, Returnfalse
.
[Idea]
This is a classic question. I met both the onsite and the electrical interface of Microsoft and YELP.
Compare the values of target and matrix [I] [j] from the upper right corner. if the value is smaller than the target value, the row cannot have this number, so I ++; if the value is greater than the target value, this column cannot have this number, so j --. if a boundary exists, the matrix does not contain the 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
=0) { int x = matrix[i][j]; if(target == x) return true; else if(target < x) --j; else ++i; } return false; }}