package test;
/**
* @Author JackFan
* @data 2021/1/9-9:02
*/
public class Offer03 {
//二维数组的二分查找
boolean findNumberIn2DArray(int[][] matrix, int target) {
int n=matrix.length;
int m=matrix[0].length;
if (n==0||m==0){
return false;
}
int left=0;
int right=m*n-1;
while (left<right){
// mid 是一维数组的索引
int mid=(left+right)/2;
if (matrix[left/m][right%m]==target){
// mid / m 是将一维数组的索引转成二维数组的行坐标
// mid % m 是将一维数组的索引转成二维数组的列坐标
return false;
}else if (matrix[left/n][right%m]<target){
left=mid+1;
}else {
right=mid-1;
}
}
return false;
}
}
二维数组的二分查找
最新推荐文章于 2022-04-29 13:07:41 发布