LeetCode240. 搜索二维矩阵 II(巧妙转换)

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

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

每列的元素从上到下升序排列。

  • 题目中最关键的信息就是每行从左到右升序,每列从左到右升序,如果暴力的话就用不到这两个条件,肯定是不行的,我先开始看见这两个条件是想通过二分来解决,但每行都进行二分的话比较浪费时间,就限定了一个小一点的范围,然后将这个范围中的数添加到一个数组中,然后排序在进行二分,这个思路也是比较麻烦的,在看完路飞大佬的题解后豁然开朗。
  • 因为它的行列都有序,如果我们将他旋转45°的话不就是一棵二叉搜索树,根节点是我们矩阵中的坐下和右上,然后在从跟向下遍历时,每次记录当前节点并和target进行比较即可
java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        // 将该矩阵旋转45°就是一个二叉搜索树,根节点为左下或右上数据,记录遍历到的节点和target
        // 进行比对即可
        int m = matrix.length, n = matrix[0].length;
        int i = m - 1, j = 0;
        int flag = matrix[i][j];
        while(i >= 0 && i < m && j >= 0 && j < n){
            flag = matrix[i][j];
            if(flag == target) return true;
            if(target > flag) j ++;
            else i --;
        }
        return false;
    }
}
  • 这个思路真的是太强了,简单还好理解,分享给大家
相关推荐
学习永无止境@8 分钟前
MATLAB中矩阵转置
算法·matlab·fpga开发·矩阵
汀、人工智能1 小时前
[特殊字符] 第106课:旋转图像
数据结构·算法·矩阵·数据库架构·数组·旋转图像
zd8451015002 小时前
51单片机-矩阵按键程序代码
矩阵·51单片机
nihao56114 小时前
机器学习:阈值与混淆矩阵
人工智能·机器学习·矩阵
6Hzlia18 小时前
【Hot 100 刷题计划】 LeetCode 74. 搜索二维矩阵 | C++ 二分查找 (一维展开法)
c++·leetcode·矩阵
跨境麦香鱼18 小时前
2026 Pinterest账号运营攻略:多开养号与矩阵引流实战
大数据·人工智能·矩阵
6Hzlia20 小时前
【Hot 100 刷题计划】 LeetCode 240. 搜索二维矩阵 II | C++ 巧妙利用单调性 (BST 法)
c++·leetcode·矩阵
Jasmine_llq2 天前
《B3865 [GESP202309 二级] 小杨的 X 字矩阵》
线性代数·矩阵·条件判断算法·枚举算法(遍历算法)·规律模拟算法
杰杰桀桀桀2 天前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘
阿Y加油吧2 天前
二分查找进阶:搜索二维矩阵 & 查找元素首尾位置 深度解析
线性代数·算法·矩阵