二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

语言Java

方法一:

1.遍历每一行
2.对每一行进行二分法查找

public class Solution {
    public boolean Find(int target, int [][] array) {
        for(int i = 0;iarray[i][mid])
                   low = mid+1;
                else if (target

注意:二分法while的循环调节必须是带有等号、否则会少遍历最后一个数;

方法二:
1.从数组的左下那数开始(右上也可、左上和右下不可以)与目标数进行比较
2.如果大于目标数则在该数的左边、如果小于这个数则在该数的上边

public class Solution {
    public boolean Find(int target, int [][] array) {
        int x = array.length - 1;
        int y = 0;
        while(x>=0&&yarray[x][y])
                y ++;
            else
                x --;
        }
        return false;
    }
}

错误方法
1.对列二分法
2.对行二分法

public class Solution {
    public boolean Find(int target, int [][] array) {
        int low = 0;
        int high = array.length-1;
        while(low<=high)
        {
            int mid = (low+high)/2;
            if(target>array[mid][0])
                low = mid + 1;
            else if(targetarray[high][mid])
                rowlow = mid + 1;
            else if(target

这个方法不能通过的原因如下

测试用例:
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

对应输出应该为:

true

你的输出为:

false

你可能感兴趣的:(二维数组中的查找)