二叉搜索树--搜索二维矩阵 II

题目描述

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

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

示例 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:

输入: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
  • -10^9 <= matrix[i][j] <= 10^9
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -10^9 <= target <= 10^9

1. 思路

如下图所示,我们将矩阵逆时针旋转 45° ,并将其转化为图形式,发现其类似于 二叉搜索树 ,即对于每个元素,其左分支元素更小、右分支元素更大。

因此,考虑从 “根节点” 开始搜索,遇到比 target 大的元素就向左,反之向右,即可找到目标值 target 。

2. 代码

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

3. 参考题目

. - 力扣(LeetCode)

相关推荐

  1. 矩阵】240.搜索矩阵II

    2024-04-13 23:22:04       63 阅读
  2. 搜索矩阵 II矩阵】【二分】

    2024-04-13 23:22:04       62 阅读
  3. 240. 搜索矩阵 II

    2024-04-13 23:22:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 23:22:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 23:22:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 23:22:04       82 阅读
  4. Python语言-面向对象

    2024-04-13 23:22:04       91 阅读

热门阅读

  1. 第8周 Python面向对象编程刷题

    2024-04-13 23:22:04       33 阅读
  2. Rockchip Android13 Vold(三):App层

    2024-04-13 23:22:04       41 阅读
  3. oracle rac打补丁后sqlplus / as sysdba ora-12537

    2024-04-13 23:22:04       32 阅读
  4. 巨坑:ModuleNotFoundError: No module named ‘dateutil‘

    2024-04-13 23:22:04       33 阅读
  5. GPT模型与知识图谱的融合之旅

    2024-04-13 23:22:04       40 阅读
  6. PTA 位运算

    2024-04-13 23:22:04       38 阅读