[LeetCode]剑指 Offer 04. 二维数组中的查找

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 04. 二维数组中的查找相关的知识,希望对你有一定的参考价值。

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

示例:

现有矩阵 matrix 如下:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。
给定 target = 20,返回 false。

限制:

0 <= n <= 1000
0 <= m <= 1000

题解:

    /**
     * 剑指 Offer 04. 二维数组中的查找
     * url:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/
     *
     * @param matrix 矩阵
     * @param target 目标数
     * @return true - 找到
     */
    public boolean findNumberIn2DArray(int[][] matrix, int target) 
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) 
            return false;
        

        int rows = matrix.length;
        int cols = matrix[0].length;
        int curRow = 0;
        int curCol = cols - 1;
        // 从二维数组的右上角开始向左下角查找,如果当前元素等于目标值,则返回 true。
        while (curRow < rows && curCol >= 0) 
            int value = matrix[curRow][curCol];
            if (value == target) 
                return true;
             else if (value > target) 
                // 如果当前元素大于目标值,则移到左边一列
                --curCol;
             else 
                // 如果当前元素小于目标值,则移到下边一行
                ++curRow;
            
        
        return false;
    

以上是关于[LeetCode]剑指 Offer 04. 二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode]剑指 Offer 04. 二维数组中的查找

Leetcode剑指 Offer 04. 二维数组中的查找

Leetcode刷题Python剑指 Offer 04. 二维数组中的查找

剑指offer 面试题04. 二维数组中的查找

#yyds干货盘点#剑指 Offer 04. 二维数组中的查找

剑指Offer 04. 二维数组中的查找