• 【LeetCode】240-搜索二维矩阵 II


    题目描述

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

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

    示例:

    现有矩阵 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


    解题思路

    设置起始点为右上角的元素,总体的遍历方向是向左下,每次遍历,将target和当前元素matrix[row][col]进行比较。

    • 如果target大于当前元素,则说明target的坐标肯定在当前元素的下面,而不可能在左边
    • 如果target小于当前元素,则说明target的坐标肯定在当前元素的左边,而不可能在下面
    • 遍历完整个二维数组都没有找到匹配的target,则返回false

    Java 实现

    public boolean searchMatrix (int[][] matrix, int target) {
        if (matrix == null || matrix.length < 1 || matrix[0].length < 1) {
            return false;
        }
        int row = 0;
        int col = matrix[0].length - 1;
        while (row <= matrix.length - 1 && col >= 0) {
            if (target == matrix[row][col]) {
                return true;
            } else if (target > matrix[row][col]) {
                row++;
            } else if (target < matrix[row][col]) {
                col--;
            }
        }
        return false;
    }
    

    心得体会

    最开始想利用左上到右下的对角线进行二分查找,思路局限于二分查找,但实际上用线性时间实现起来更简便。

  • 相关阅读:
    QTP自学攻略
    自动检查页面链接是否有效
    使用Loadrunner进行接口测试
    缺陷管理方案
    python读取文本、配对、插入数据脚本
    QTP 中对象操作
    python学习笔记(三)--条件语句
    npm WARN uninstall not installed in /Users/hrt0kmt/node_modules: "xxx"
    appium mac 下 安装及踩坑
    homebrew -v 或homebrew -doctor报错请检查 .bash_profile是否有误
  • 原文地址:https://www.cnblogs.com/yuzhenzero/p/10620136.html
Copyright © 2020-2023  润新知