一、题目
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
二、 解题思路
遍历每一行矩阵,使用二分查找判断该行是否包含目标值
三、代码
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
//遍历每一行
for(int[] row:matrix) {
int index=binarySearch(row, target);
if(index>=0) {
return true;
}
}
return false;
}
//二分查找模板
public int binarySearch(int[] row, int target) {
int low=0;
int high=row.length-1;
while(low<=high) {
int mid=low+(high-low)/2;
if(row[mid]==target) {
return mid;
}else if(row[mid]<target) {
low=mid+1;
}else {
high=mid-1;
}
}
return -1;
}
}