力扣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;
    }
};
相关推荐
得物技术31 分钟前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六4 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术5 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize5 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
罗西的思考19 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队1 天前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC2 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC2 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK2 天前
线段树维护区间 k 次方和
c++·数学·算法·stl