当前位置: 首页 > article >正文

力扣 74. 搜索二维矩阵

🔗 https://leetcode.cn/problems/search-a-2d-matrix

题目

  • 给一个二维矩阵,保证数字在每行从左到右都是非严格递增
  • 每一行的第一个数字大于上一行最后一个数字
  • 给一个 target,判断是否存在在二维矩阵中

思路

  • 先 binary search 定位到行,再 binary search 定位到列

代码

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size();
        int n = matrix[0].size();
        int x, y, xx, yy;
        x = 0; y = 0; 
        xx = m - 1; yy = n - 1;
        int mid_x = (x + xx) / 2;
        while (x <= xx) {
            mid_x = (x + xx) / 2;
            if (matrix[mid_x][n - 1] < target) {
                x = mid_x + 1;
            }
            if (matrix[mid_x][0] > target) {
                xx = mid_x - 1;
            }

            if (matrix[mid_x][0] <= target && matrix[mid_x][n - 1] >= target)
                break;
        }

        if (matrix[mid_x][0] > target || matrix[mid_x][n - 1] < target) 
            return false;

        int mid_y = (y + yy) / 2;
        while (y <= yy) {
                int mid_y = (y + yy) / 2;
                if (matrix[mid_x][mid_y] == target) return true;
                if (matrix[mid_x][mid_y] < target) {
                    y = mid_y + 1;
                } else {
                    yy = mid_y - 1;
                }  
        }
        return false;
    }
};

http://www.kler.cn/a/488653.html

相关文章:

  • 2025年VGC大众汽车科技社招入职测评综合能力英语口语SHL历年真题汇总、考情分析
  • uniapp 微信小程序内嵌h5实时通信
  • 如何在 Linux系统用中挂载和管理磁盘分区
  • Kivy,跨平台UI的艺术家
  • HBuilderX打包ios保姆式教程
  • 机器学习基础-概率图模型
  • Flask返回浏览器无乱码方法
  • selenium如何分析网页呢 python爬虫,
  • RK3568-ubuntu旋转显示和触摸
  • 准备机器学习数据的完整指南
  • 开源 vGPU 方案 HAMi 解析
  • Python Excel页眉页脚设置详解
  • FairGuard游戏安全2024年度报告
  • 如何进行单体前后端项目的微服务改造
  • 亚矩阵云手机:跨境出海直播的全方位利器
  • c语言提供后端,提供页面显示跳转服务
  • 【JVM】总结篇之GC日志分析 和 案例
  • 怎么修复损坏或者语法有问题的PDF-免费PDF编辑工具分享
  • 从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
  • 9,STL——vector类
  • 机器学习实战——K-均值聚类算法:原理与应用
  • 软考 高级 架构师 第十一章 面向对象分析 设计模式
  • 天童美语:如何培养孩子的音乐细胞
  • 测试开发之面试宝典
  • mysql中查询json的技巧
  • 【大模型入门指南 07】量化技术浅析