题目来源

题目描述

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

解题思路

从右上角(i=0,j=col-1)开始搜索,用当前值(array[i][j])与target进行比较,分三种情况:

  • 如果target等于当前值,返回true,停止
  • 如果target大于当前值,向下搜索,i++
  • 如果target小于当前值,向左搜索,j--

停止条件:i <= row - 1 && j >= 0,返回false

解题代码

public class Solution {
    public boolean Find(int target, int [][] array) {
        if (array.length < 0) {
            return false;
        }
        int i = 0;
        int j = array.length - 1;
        while (i <= array[0].length - 1 && j >= 0) {
            if (array[i][j] == target) {
                return true;
            } else if (array[i][j] < target) {
                i++;
            } else {
                j--;
            }
        }
        return false;
    }
}