Total Accepted: 72190
Total Submissions: 216465
Difficulty: Medium
Write an efficient algorithm that searches for a value in an m x n 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
, return true
.
折半查找即可 ;
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
for(int i = 0 ; i <matrix.size() ; i++ ){
int low=0 , high = matrix[i].size()-1;
while(low <= high ){
int mid = (low+high) >> 1 ;
if(matrix[i][mid] > target )
high = mid-1 ;
else if (matrix[i][mid] == target )
return true ;
else
low = mid+1 ;
}
}
return false ;
}
};