力扣hot100(21)搜索二维矩阵 II

方法:Z字形查找法、二分法、暴力法

面试最优 Z字形查找法:

核心思想:选对起点,一次排除一行或者一列。

找一个特殊的起点,使得每次比较之后,都能直接排除一整行或者一整列。不用遍历多余的元素。

注意不能选择左上角和右下角,因为左上角是最小的元素,如果target比他大,右边和下边的元素都可能更大,没法排除一行或者一列。右下角最大的元素同理。

可以选右上角和左下角,

右上角的元素matrix[x][y],是当前行最大的元素 ,也是当前列最小的元素

  • 如果matrix[x][y] == target:直接找到,返回 true;
  • 如果matrix[x][y] > target:说明这一列所有元素都比target大(因为列是升序的),直接排除这一列,y--
  • 如果matrix[x][y] < target:说明这一行所有元素都比target小(因为行是升序的),直接排除这一行,x++
cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        
       //Z字法:找右上角的元素 来排除一行或者一列 排出后 新的矩阵继续。
    int m =matrix.size();
    int n = matrix[0].size();
    int x=0,y = n-1;
    while(x<m && y>=0){

        if(matrix[x][y] == target){
            return true;
        }

        if(matrix[x][y]<target){
            ++x;
        }

        else{
            --y;
        }
    }
    return false;
    }
};
相关推荐
有点。6 小时前
C++03阶段练习(练习题)
数据结构·算法·图论
周末也要写八哥8 小时前
经典算法实例:游戏中弱角色的数量(二)
算法
是Yu欸8 小时前
鸿蒙PC移植:2048 从网页小游戏到 AI 桌面应用
大数据·人工智能·算法·数据挖掘·openharmony·codex
鹿角片ljp8 小时前
KV Cache 解析
java·算法
liliangcsdn8 小时前
IVOL与偏度因子的对比测量分析
算法
threerocks10 小时前
Jev 入门第一课
算法
西柚研究生12345611 小时前
论文分析17:YOLOv11_UAVNet:无人机航拍图像专用目标检测算法
人工智能·python·深度学习·算法·目标检测
hetao173383711 小时前
2026-09-17 hetao1733837 的刷题记录
c++·算法
午彦琳12 小时前
2026.9.17
数据结构·算法·leetcode
木井巳12 小时前
【记忆化搜索】不同路径
java·算法·leetcode·深度优先·剪枝·推荐算法