您的位置:首页 > 其它

leetcode_middle_71_74. Search a 2D Matrix

2017-03-07 19:17 375 查看
题意:

一个从上到下,从左到右有序的矩阵,要求实现其查找算法。

分析:

意思不就是有序,明显二分查找。由于是二维数组,首先我们就思考能不能按照一维的方法做(先尝试最良好的实现代码风格),把一个数字转化为坐标,比如求余啥的(再继续思考,发现可以)。

我们递归之:

public class Solution {
int row = 0;
int col = 0;
public boolean searchMatrix(int[][] matrix, int target) {
row = matrix.length;
if (row == 0) {
return false;
}
col = matrix[0].length;
return binarySearchMatrix(matrix, 0, row*col-1, target);
}

private boolean binarySearchMatrix(int[][] matrix, int low, int high, int target){
if(low>high){
return false;
}
int mid = low + (high - low)/2;
if(target<matrix[mid/col][mid%col])
return binarySearchMatrix(matrix, low, mid-1, target);
else if(target>matrix[mid/col][mid%col])
return binarySearchMatrix(matrix, mid+1, high, target);
else
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode