LeetCode--HOT100题(21)

目录

  • 题目描述:240. 搜索二维矩阵 II(中等)
    • 题目接口
    • 解题思路
    • 代码
  • PS:

题目描述:240. 搜索二维矩阵 II(中等)

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

LeetCode做题链接:LeetCode-搜索二维矩阵 II

示例 1:
LeetCode--HOT100题(21)_第1张图片

输入: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

示例 2:
LeetCode--HOT100题(21)_第2张图片

输入: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 = 20
输出:false

提示:

m == matrix.length
n == matrix[i].length
1 <= n, m <= 300
-109 <= matrix[i][j] <= 109
每行的所有元素从左到右升序排列
每列的所有元素从上到下升序排列
-109 <= target <= 109

题目接口

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        
    }
}

解题思路

参考题解:详细通俗的思路分析,多解法
LeetCode--HOT100题(21)_第3张图片
简单来说就是从右上角开始往左下角缩圈,最久就是缩到只剩左下角一个元素
下面是例子:

[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  = 9,如果我们从右上角 15 开始遍历, cur = 15
    
target < 15, 去掉当前列, cur = 11
[1,   4,  7, 11],
[2,   5,  8, 12],
[3,   6,  9, 16],
[10, 13, 14, 17],
[18, 21, 23, 26]    
    
target < 11, 去掉当前列, cur = 7  
[1,   4,  7],
[2,   5,  8],
[3,   6,  9],
[10, 13, 14],
[18, 21, 23]     

target > 7, 去掉当前行, cur = 8   
[2,   5,  8],
[3,   6,  9],
[10, 13, 14],
[18, 21, 23]       

target > 8, 去掉当前行, cur = 9, 遍历结束    
[3,   6,  9],
[10, 13, 14],
[18, 21, 23]   

代码

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if (matrix.length == 0 || matrix[0].length == 0) {
            return false;
        }
        int row = 0;
        int col = matrix[0].length - 1;
        //	一开始在右上角matrix[row][col]
        while (row < matrix.length && col >= 0) {
            if (target > matrix[row][col]) {	// 去掉最右边
                row++;
            } else if (target < matrix[row][col]) {	// 去掉最上边
                col--;
            } else {
                return true;
            }
        }
        return false;
    }
}

PS:

感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个喔~

你可能感兴趣的:(LeetCodeHot100,leetcode,算法)