码迷,mamicode.com
首页 > 其他好文 > 详细

Search a 2D Matrix

时间:2015-04-16 06:46:56      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

这道题有两种解法,第一种最好想吧,2次两分法,第二种是维度变换

详细解释ref http://www.cnblogs.com/springfor/p/3857959.html

public class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if(matrix==null || matrix.length==0 || matrix[0].length==0) return false;
        int low = 0, high = matrix.length-1;
        while(low<=high){
            int mid = (low+high)/2;
            if(target==matrix[mid][0]){
                return true;
            } 
            else if(target < matrix[mid][0]){
                high = mid-1;
            }else{
                low = mid+1;
            }
        }
        int row = (high+low)/2; // 这个细节要想清楚
        low = 0;
        high = matrix[0].length-1;
        while(low<=high){
            int m = (low+high)/2;
            if(matrix[row][m]== target) {
                return true;
            }else if(matrix[row][m]> target){
                high = m-1;
            }else{
                low = m+1;
            }
        }
        return false;
    }
}

 

Search a 2D Matrix

标签:

原文地址:http://www.cnblogs.com/jiajiaxingxing/p/4430895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!