LeetCode Hot100 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵:

  • 每行中的整数从左到右按非严格递增顺序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

思路

      第一次

        两次二分查找,先找行,再找列,注意数组不要越界。复杂度上logmn

      第二次

         当一维数组做,复杂度同logmn

代码

      第一遍

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int i = 0,j = matrix.size()-1;int m,row;while(i<=j){m = i+ (j-i)/2;if(matrix[m][0] == target)return true;else if(matrix[m][0] > target){j = m-1;}elsei = m+1;}if((row = i-1) < 0)return false;i = 0;j = matrix[0].size()-1;while(i<=j){m = i + (j-i)/2;if(matrix[row][m] == target)return true;else if(matrix[row][m] > target)j = m-1;elsei = m+1;}return false;}
};

         第二遍

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int i = 0,j = matrix.size()*matrix[0].size()-1;int m,size = matrix[0].size();int row,col;while(i<=j){m = i+ (j-i)/2;row = m/size;col = m%size;if(matrix[row][col] == target)return true;else if(matrix[row][col] > target){j = m-1;}elsei = m+1;}return false;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3269745.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

本地化部署Chatglm和防踩坑攻略

最近想搞点什么东西练练手&#xff0c;传统crud又没有意义&#xff0c;于是就看到了给介绍AI的文章&#xff0c;然后就慢慢自己摸索&#xff0c;从0到1&#xff0c;独自部署应用。 项目简介 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是…

CVPR`24 | 4D编辑哪家强?浙大首次提出通用指导4D编辑框架:Instruct 4D-to-4D

文章链接&#xff1a;https://arxiv.org/pdf/2406.09402 项目地址&#xff1a;https://immortalco.github.io/Instruct-4D-to-4D/ 今天和大家一起学习的是Instruct 4D-to-4D&#xff0c;可以通过2D扩散模型实现4D感知和时空一致性&#xff0c;以生成高质量的指令引导的动态场景…

selenium----CSS表达式选择元素

前面我们学习了根据 id、class属性、tag名 选择元素。 如果我们要选择的 元素 没有id、class 属性&#xff0c;或者有些我们不想选择的元素 也有相同的 id、class属性值&#xff0c;怎么办呢&#xff1f;这时候我们通常可以通过 CSS selector 语法选择元素。 选择元素 通过 …

22.jdk源码阅读之Thread(上)

1. 写在前面 Java 中的 Thread 类是多线程编程的基础&#xff0c;也是我们日常工作中用的比较多的类&#xff0c;但是你真的了解它吗&#xff1f;下面这几个问题你是否有思考过&#xff1f; start() 和 run() 方法有什么区别&#xff1f;什么是线程的生命周期&#xff1f;什么…

邮件攻击案例系列三:动态 IP 池爆破员工邮箱钓鱼重要客户

案例描述 2023 年 11 月&#xff0c;某制造业企业员工 Emily 接到海外客户电话&#xff0c;向其核实一封电子邮件的真实性&#xff0c;因为客户认为&#xff0c;该邮件所给出的链接不像是该公司的官网网址。Emily 查看自己的邮箱&#xff0c;并未发现客户所说的邮件。但从客户…

RPA:如何一次回答多个问题

洞悉技术的本质&#xff0c;享受科技的乐趣 先完成10%目标&#xff0c;迈出100%之一行动 2分钟的努力也有价值 从每天解决1个小问题开始。 本文介绍如何使用playwright来处理新页面 三句话说清楚问题 一天回答一个问题太慢了&#xff0c;我想一天回答 3个问题 了解基本原理 新页…

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a; 《YOLOv5入门 改…

概率模拟(sigmoid、softmax)

概率模拟&#xff08;sigmoid、softmax&#xff09; 1. sigmoid1.1 sigmoid 定义1.2 sigmoid 主要特性1.3 sigmoid 的缺点1.4 代码画 sigmoid 函数图像 2. softmax2.1 softmax 定义与原理2.2 softmax 特点与优势2.3 softmax 应用场景2.4 softmax 实现方式2.5 softmax 注意事项2…

C++从入门到起飞之——友元内部类匿名对象 全方位剖析!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1、友元 2、内部类 3. 匿名对象 4、完结散花 1、友元 • 友元提供了⼀种突破类访问限定符封装的…

在 Jetpack Compose 中使用 CameraX示例

在使用Jetpack Compose开发安卓应用&#xff0c;当在学习使用CameraX组件时发现官方提供的教程不是Compose的。教程地址如下&#xff1a; https://developer.android.com/codelabs/camerax-getting-started?hlzh-cn#1 与是我就记录一下&#xff0c;简单的示例。 内容参考&…

吴恩达的TranslationAgent学习

TranslationAgent构成 整个[TranslationAgent (github.com)]在流程上分为短文本的一次性翻译和长文本的分chunk翻译&#xff08;按照Token进行划分&#xff09;。 但是不论长文本翻译还是短文本翻译&#xff0c;总体流程遵循执行、纠正再执行的逻辑循环实现。 这种按照自省思路…

基于JSP的电子商城系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSPJavaB/S架构 工具&#xff1a;Eclipse、Tomcat 系统展示 首页 管理员功能界面 用户功能界面 医…

Kylin 入门教程

Apache Kylin 是一个开源的分布式数据仓库和 OLAP(在线分析处理)引擎,旨在提供亚秒级查询响应时间,即使在处理超大规模数据集时也是如此。Kylin 可以有效地将原始数据预计算为多维数据立方体(Cube),并利用这些预计算结果来提供快速查询。本文将带你从基础知识到操作实践…

项目管理工具-Maven-创建一个mavenweb项目

文章目录 IDEA开发maven项目依赖范围 IDEA开发maven项目 点击NewProject&#xff0c;填写项目名字Name为javaWeb-maven&#xff0c;填写项目的存储地址&#xff0c;选择Archetype为org.apache.maven.archetypes:maven-archetype-webapp&#xff0c;然后再点击Create&#xff0…

Android WebViewClient 的 `shouldOverrideUrlLoading` 方法

简介 在Android开发中&#xff0c;WebView是一个强大的工具&#xff0c;可以在你的应用中显示网页内容。了解 WebViewClient 中的 shouldOverrideUrlLoading 方法是至关重要的&#xff0c;因为这个方法允许你控制 URL 在 WebView 中的处理方式。 在本文中&#xff0c;我们将详…

基于FFmpeg和SDL的音视频解码播放的实现过程与相关细节

目录 1、视频播放器原理 2、FFMPEG解码 2.1 FFMPEG库 2.2、数据类型 2.3、解码 2.3.1、接口函数 2.3.2、解码流程 3、SDL播放 3.1、接口函数 3.2、视频播放 3.3、音频播放 4、音视频的同步 4.1、获取音频的播放时间戳 4.2、获取当前视频帧时间戳 4.3、获取视…

OZON打开哈萨克斯坦市场,OZON测试开通哈萨克斯坦市场中国产品

在全球化日益深入的今天&#xff0c;跨境电商成为了连接不同国家和地区消费者的重要桥梁。2024年7月26日&#xff0c;Ozon Global宣布了一项重大扩展计划&#xff0c;正式将中国卖家的销售版图拓展至哈萨克斯坦市场&#xff0c;为中国企业打开了新的增长机遇之门。 OZON哈萨克斯…

实现共模噪声电流相互抵消的方法

共模传导路径中噪声电流相互抵消&#xff0c;从而使总的共模电流减小&#xff0c; 终达到降噪的目的。目前为实现共模噪声电流相互抵消&#xff0c;主要是采用动点电容抵消法。 动点电容抵消法原理 动点电容抵消法就是选取合适的动点&#xff0c;添加原副边跨接电容&#xff0c…

【Leetcode】二十、记忆化搜索:零钱兑换

文章目录 1、记忆化搜索2、leetcode509&#xff1a;斐波那契数列3、leetcode322&#xff1a;零钱兑换 1、记忆化搜索 也叫备忘录&#xff0c;即把已经计算过的结果存下来&#xff0c;下次再遇到&#xff0c;就直接取&#xff0c;不用重新计算。目的是以减少重复计算。 以前面提…

深度强化学习 ②(DRL)

参考视频&#xff1a;&#x1f4fa;王树森教授深度强化学习 前言&#xff1a; 最近在学习深度强化学习&#xff0c;学的一知半解&#x1f622;&#x1f622;&#x1f622;&#xff0c;这是我的笔记&#xff0c;欢迎和我一起学习交流~ 这篇博客目前还相对比较乱&#xff0c;后面…