美文网首页
剑指Offer——二维数组查找 Java

剑指Offer——二维数组查找 Java

作者: Mereder | 来源:发表于2019-04-03 22:05 被阅读0次

题目描述

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

(对应Leetcode 240. Search a 2D Matrix II)

解题思路

首先选取数组中==右上角==的数字。

如果该数字等于要查找的数字,查找过程结束;

如果该数字大于要查找的数字,剔除这个数字所在的列;

如果该数字小于要查找的数字,剔除这个数字所在的行。

也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。

关键点: 从右上角开始!!!

注意点:

鲁棒性:对于输入的数组是空的,是null的处理。

循环结束条件: 行数超过n-1 或者 列数 < 0

    public boolean Find(int target, int [][] array) {
        int n = array.length;
        boolean isFind = false;
        if (array != null && n > 0) {
            int row = 0;
            int col = n - 1;
            while (row < n && col >= 0) {
                int A = array[row][col];
                if (target > A) {
                    row++;
                } else if (target < A) {
                    col--;
                } else {
                    isFind = true;
                    break;
                }
            }
        }
        return isFind;
    }

相关文章

网友评论

      本文标题:剑指Offer——二维数组查找 Java

      本文链接:https://www.haomeiwen.com/subject/fqwtiqtx.html