Write an efficient algorithm that searches for a value inMXNMatrix. This matrix has the following properties:
- Integers in each row are sorted from left to right.
- The first integer of each row is greater than the last integer of the previous row.
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]
GivenTarget=3
, Returntrue
.
1 public class Solution { 2 public boolean searchMatrix(int[][] matrix, int target) { 3 int line=0; 4 if (matrix.length<1) { 5 return false; 6 } 7 if (target<matrix[0][0]) { 8 return false; 9 }10 for (int i = 1; i < matrix.length; i++) {11 if (matrix[i][0]>target) {12 line=i-1;13 break;14 }15 if (matrix[i][0]==target) {16 return true;17 }18 if (matrix[i][matrix[i].length-1]>=target) {19 line=i;20 } 21 }22 23 for (int is : matrix[line]) {24 if (is==target) {25 return true;26 }27 }28 return false;29 }30 }
Leetcode search a 2D matrix