题目描述

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

思路

1.从二维数组的右上角开始搜索,若target大于当前元素,我们的检索方向就向下,若小于,我们的检索方向就向左,若检索出界,还没找到结果,直接返回false即可。

Java代码实现

public class Solution {
    public boolean Find(int target, int [][] array) {
        if(array.length == 0)
            return false;
        int col = array[0].length-1;
        int row = 0;
        while(col >=0 && row < array.length){
            int cur = array[row][col];
            //如果target>cur,向下寻找
            if(target > cur){
                row++;
            }
            //如果target<cur,向左寻找
            else if(target < cur){
                col--;
            }
            //找到直接返回
            else{
                return true;
            }
        }
        return false;
    }
}