74. Search a 2D Matrix
Write an efficient algorithm that searches for a value in an mxn matrix. 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]
]
Given target=3, returntrue.
思路:当成一维数列看,二分法
public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix.length == 0) return false;
int row = matrix.length;
int col = matrix[0].length;
int l = 0;
int r = row*col-1;
while (l<=r){
int m = (l+r)/2;
int m_row = m/col;
int m_col = m%col;
if (matrix[m_row][m_col]==target){
return true;
}
else if (matrix[m_row][m_col]<target){
l = m+1;
}
else if (matrix[m_row][m_col]>target){
r = m-1;
}
}
return false;
}
}