74.Search in a 2D Matrix

    /*
     * 74.Search in a 2D Matrix 
     * 12.5 by Mingyang 
     * 这里面的对应挺巧的:
     * 这个就是将2D矩阵转化成1行数组的对应表。所以对于二分查找法的初始值为:
     * low=0,high=rows*columns-1(总共数值的个数,因为从0开始所以减1)。 
     * 为了能够方便在given 2D matrix找到需要比对的值
     * 我们还是需要确定行数和列数,通过上表可以看出,行数是position/columns,而列数是position%columns,
     */
    public boolean searchMatrix(int[][] matrix, int target) {
        if (matrix.length == 0 || matrix[0].length == 0 || matrix == null)
            return false;
        int rows = matrix.length;
        int cols = matrix[0].length;
        int low = 0;
        int high = rows * cols - 1;
        while (low <= high) {//一定要等号,因为可能存在low,high相等的情况下,还等于target
            int mid = (low + high) / 2;
            int midValue = matrix[mid / cols][mid % cols];
            if (midValue == target)
                return true;
            else if (midValue < target)
                low = mid + 1;
            else
                high = mid - 1;
        }    
        return false;
    }
原文地址:https://www.cnblogs.com/zmyvszk/p/5484377.html