剑指offer之二维数组中的查找

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

二维数组(每行每列都递增排序):

1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15

思路:

  • 右上角思路:
    如果数字比array[row][column]小,那它肯定比当前列的数字都小
    因此,column--
    如果数字比array[row][column]大,那它肯定比当前行的数字大
    因此,row++
  • 左下角思路:
    如果数字比array[row][column]小,那它肯定比当前行的数字都小
    因此,row--
    如果数字比array[row][column]大,那它肯定比当前lie的数字大
    因此,column++
//右上角是数组中最大的数字。
public static boolean Find(int target, int [][] array) {
        int row = 0;
        int column = array.length-1;
        while (column >= 0 && row < array[0].length) {
            if (array[row][column] > target) {
                column--;
            } else if (array[row][column] < target) {
                row++;
            } else {
                return true;
            }
        }
        return false;
    }
//左下角是数组中最小的数字。
public static boolean Find2(int target, int [][] array) {
        int row = array.length-1;
        int column = 0;
        while (row >= 0 && column < array[0].length) {
            if (array[row][column] > target) {
                row--;
            } else if (array[row][column] < target) {
                    column++;
                } else {
                    return true;
                }
            }
        return false;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容