算法-搜索二维矩阵 II

1、题目来源

240. 搜索二维矩阵 II - 力扣(LeetCode)

2、题目描述

编写一个高效的算法来搜索 m x 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
  • -109 <= matrix[i][j] <= 109
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -109 <= target <= 109

3、题解分享

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        // 思路:直接遍历
        for (int[] row : matrix) {
            for (int element : row) {
                if (element == target) {
                    return true;
                }
            }
        }
        return false;
    }
}
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //思路:二分查找 + 每行进行二分搜索
        for (int[] row : matrix) {
            int index = search(row, target);
            if (index >= 0) {
                return true;
            }
        }
        return false;
    }

    public int search(int[] nums, int target) {
        int low = 0, high = nums.length - 1;
        while (low <= high) {
            int mid = (high - low) / 2 + low;
            int num = nums[mid];
            if (num == target) {
                return mid;
            } else if (num > target) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }
        return -1;
    }
}

 

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        // 思路:直接搜索 + 从左下角或者右上角 往对角线方向搜索
        int n = matrix.length;
        int m = matrix[0].length;
        int row = n -1,col = 0;
        while(row >=0 && col < m){
            if(matrix[row][col] == target){
                return true;
            }else if(matrix[row][col] > target){
                --row;
            }else{
                ++col;
            }
        }
        return false;
    }
}

相关推荐

  1. 算法详解】力扣240.搜索矩阵II

    2024-02-22 09:18:03       25 阅读
  2. 矩阵】240.搜索矩阵II

    2024-02-22 09:18:03       41 阅读
  3. 搜索矩阵 II矩阵】【二分】

    2024-02-22 09:18:03       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-22 09:18:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-22 09:18:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-22 09:18:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-22 09:18:03       20 阅读

热门阅读

  1. springboot实现Aop(通知)切面编程的案例

    2024-02-22 09:18:03       31 阅读
  2. 微信小程序canvas开发的一些坑和总结-持续更新

    2024-02-22 09:18:03       32 阅读
  3. Ubuntu22.04配置静态ip

    2024-02-22 09:18:03       36 阅读
  4. 【工具】Ubuntu开机黑屏、NVIDIA显卡驱动问题

    2024-02-22 09:18:03       27 阅读
  5. vue、thinkphp实现腾讯云对象存储COS图片上传

    2024-02-22 09:18:03       26 阅读
  6. 数据结构:结构体定义方式

    2024-02-22 09:18:03       26 阅读
  7. 数据结构day2

    2024-02-22 09:18:03       25 阅读
  8. 机器学习科普及学习路线

    2024-02-22 09:18:03       29 阅读
  9. 协程和线程

    2024-02-22 09:18:03       27 阅读