Leetcode Hot 100刷题记录 -Day17(搜索二维矩阵II)

搜索二维矩阵II

问题描述:

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

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

示例 1:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

示例 2:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

解题思路:

采用二分查找!!!

  • 矩阵不存在,返回false
  • 某一行的第一个元素大于了 target ,当前行和后边的所有行都不用考虑了,直接返回 false
  • 某一行的最后一个元素小于了 target ,当前行就不用考虑了,换下一行
//提交版class Solution {public boolean searchMatrix(int[][] matrix, int target){if(matrix.length==0 || matrix[0].length == 0)return false;for (int i =0;i<matrix.length;i++){if (matrix[i][0] > target)return false;if ((matrix[i][matrix[i].length - 1]) < target)continue;int col = binarySearch(matrix[i], target);if (col != -1)return true;}return false;}public int binarySearch(int[] nums, int target){int low = 0;int high = nums.length-1;while (low <= high){int mid = (high - low)/2 + low;int num = nums[mid];if (num == target)return mid;else if (num > target) {high = mid - 1;}else {low = mid + 1;}}return -1;}
}//带有输入输出版
import java.util.Arrays;public class hot18_searchMatrix {public boolean searchMatrix(int[][] matrix, int target){if(matrix.length==0 || matrix[0].length == 0)return false;for (int i =0;i<matrix.length;i++){if (matrix[i][0] > target)return false;if ((matrix[i][matrix[i].length - 1]) < target)continue;int col = binarySearch(matrix[i], target);if (col != -1)return true;}return false;}public int binarySearch(int[] nums, int target){int low = 0;int high = nums.length-1;while (low <= high){int mid = (high - low)/2 + low;int num = nums[mid];if (num == target)return mid;else if (num > target) {high = mid - 1;}else {low = mid + 1;}}return -1;}public static void main(String[] args){int[][] matrix = {{1,4,7,11,15}, {2,5,8,12,19}, {3,6,9,16,22},{10,13,14,17,24},{18,21,23,26,30}};int target = 5;System.out.println("输入:" + Arrays.deepToString(matrix));hot18_searchMatrix hot18SearchMatrix = new hot18_searchMatrix();boolean result = hot18SearchMatrix.searchMatrix(matrix,target);System.out.println("输出:" + result);}}

 

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

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

相关文章

【PSINS工具箱】仅速度为观测量的SINS/GNSS组合导航,MATLAB源代码,无需下载,可直接复制

工具箱 本程序需要在安装工具箱后使用,工具箱是开源的,链接:http://www.psins.org.cn/kydm 程序简述 原文的153组合导航是SINS/GPS下的位置观测或位置+速度观测,本文所述的代码是仅三轴位置观测的,使用UKF来滤波。 最后输出速度对比、速度误差、姿态对比、姿态误差、位…

Gwork企业微办公管理系统:企业管理的多面手

Gwork企业微办公管理系统&#xff1a;企业管理的多面手 在企业信息化管理的道路上&#xff0c;你是否还在为繁琐的系统集成和复杂的业务流程头疼&#xff1f;Gwork企业微办公管理系统也许就是你正在寻找的那个得力助手。本文将带你了解Gwork的核心功能及其如何帮助企业提升工作…

【Arduino】Arduino使用USB-TTL无法下载程序问题

问题描述 自己绘制了一套基于Arduino MEGA的电路&#xff0c;没有在板子上面绘制CH340的标准下载电路&#xff0c;只保留了UART0的插针用于调试和下载程序。 使用ISP烧录完bootloader后&#xff0c;发现无法使用USB-TTL工具烧录程序 问题解决过程 在网上搜索了相关资料&…

洛谷P2240——贪心算法

贪心算法是好理解的&#xff0c;是简单的&#xff0c;但是困难的可能是结构体的应用&#xff0c;stl的使用等等&#xff0c;下面这道题就体现了这一点。 这道题主要要算单价&#xff0c;通过比较单价来排序&#xff0c;并计算。 如果单开数组&#xff0c;排完单价&#xff0c;…

ER 图 Entity-Relationship (ER) diagram 101 电子商城 数据库设计

起因&#xff0c; 目的: 客户需求, 就是要设计一个数据库。 过程&#xff0c; 关于工具: UI 设计&#xff0c;我最喜欢的工具其实是 Canva, 但是 Canva 没有合适的模板。我用的是 draw.io, 使用感受是&#xff0c;很垃圾。 各种快捷键不适应&#xff0c;箭头就是点不住&…

【雅特力AT32】串口入门实战:轮询、中断、SWAP(收发管脚交换)功能

本文将会把数据手册结合三个案例讲解&#xff0c;需要看源码可以直接看后面。 但是代码一定要结合中断、收发配置部分来理解&#xff0c;这两部分不建议跳过&#xff01;&#xff01;&#xff01; 串口协议层不再介绍&#xff0c;需要请移步&#xff1a; 【串口通信详解】US…

打通最后一公里:使用CDN加速GitHub Page的访问

无论是互联网从业者还是科研人员&#xff0c;使用Github Page能够很友好的建立个人网站。 目前比较主流的方案是使用GitHub Page托管文字网页&#xff0c;利用GitHub仓库托管图床&#xff0c;稳定可靠&#xff08;Gitee的page突然撤退&#xff0c;让人不敢再将图床放到上面&am…

VCS和Verdi联合仿真使用学习记录

环境&#xff1a;linux 工具&#xff1a;vcs&#xff0c;verdi 最近学习如何在linux环境下使用vcs编译仿真&#xff0c;使用verdi查看波形。VCS 是 Synopsys 开发的一款高性能的 Verilog 和 SystemVerilog 编译仿真工具。它广泛用于数字电路设计和验证&#xff0c;特别是在 A…

javascript-代码执行原理

js 是解释型语言 js 引擎执行流程 分为两个阶段: 语法分析执行阶段执行阶段涉及的数据结构: 调用栈。处理执行上下文和执行代码内存堆。给对象分配内存任务队列。暂存待执行的任务,分为宏任务队列和微任务队列语法分析 词法分析 > 语法分析 > 代码生成(字节码) …

C++map,set,multiset,multimap详细介绍

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set set的介绍 set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器 4. set的容量 5. set的修改操作 6. set的使用举例 ​3.2 map map的介绍 map的使用 1. map的模板参数声明 2. map的构造 …

【数学分析笔记】第3章第2节 连续函数(4)

3. 函数极限与连续函数 3.2 连续函数 3.2.9 反函数的连续性定理 【定理3.2.2】【反函数连续性定理】设 y f ( x ) yf(x) yf(x)在闭区间 [ a , b ] [a,b] [a,b]上连续且严格单调增加&#xff0c;设 f ( a ) α , f ( b ) β f(a)\alpha,f(b)\beta f(a)α,f(b)β&#xff0…

iPhone 16系列:摄影艺术的全新演绎,探索影像新境界

在科技的浪潮中&#xff0c;智能手机摄影功能的进化从未停歇。 苹果公司即将推出的iPhone 16系列&#xff0c;以其卓越的相机升级和创新特性&#xff0c;再次站在了手机摄影的前沿。 从硬件到软件&#xff0c;从拍照体验到图像处理&#xff0c;iPhone 16系列都展现了其在移动…

通信工程学习:什么是PON无源光网络

PON&#xff1a;无源光网络 PON&#xff08;Passive Optical Network&#xff0c;无源光纤网络&#xff09;是一种采用光分路器等无源光器件进行信号传输和分配的光纤接入技术。它利用光纤作为传输媒介&#xff0c;通过无源设备将光信号从中心局&#xff08;如光线路终端OLT&am…

工号不够用了怎么办? - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;E卷D卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 3020年&#xff0c;空间通信集团的员工人数数量突破20亿&#xff0c;现有工号系统不够用的窘境。 现在&#xff0c;请你负责调研新工号系统。继承历史传统&#xff0c;新工号系…

瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商

本文适用于触觉智能所有Linux系统的开发板、主板添加自启动命令的方法&#xff0c;本次使用了触觉智能的EVB3588开发板演示&#xff0c;搭载了瑞芯微RK3588旗舰芯片。 该开发板为核心板加底板设计&#xff0c;为工业场景设计研发的模块化产品&#xff0c;10年以上稳定供货,帮助…

Selenium实现滑动滑块验证码验证!

背景&#xff1a;在部分的登录中有滑动验证码的验证&#xff0c;由于滑动验证码的缺块是随机的就导致实现起来比较困难&#xff01; 01、实现方案 模板匹配 通过openCV分析两个图片的相似度&#xff0c;获取两个相似度很高图片的坐标&#xff0c;从而计算两个图片的距离。 轮…

医学数据分析实训 项目九 糖尿病风险预测

文章目录 综合实践二 糖尿病遗传风险预测一、分析目标二、实现步骤三、数据准备四、特征工程五、模型构建六、性能度量七、提交要求 综合实践任务二 糖尿病遗传风险预测代码&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;特征工程&#xff08;三&#xff09;模…

云原生(Cloud Native)简介及相关技术

云原生&#xff08;Cloud Native&#xff09;简介及相关技术 什么是云原生&#xff1f; 云原生&#xff08;Cloud Native&#xff09;是一种设计和开发应用程序的方法&#xff0c;旨在充分利用云计算的弹性、可扩展性和分布式架构优势。通过采用微服务架构、容器化、持续集成…

vscode软件在 C发中常用插件

一. 简介 本文简单介绍一下&#xff0c;当做 C开发时 vscode软件常用的插件。 vscode软件是 微软公司目前提供的一款免费的开发软件&#xff0c;可以通过 vscode官网下载 vscode。 二. vscode软件在 C开发中常用插件 注意&#xff1a;vscode软件安装后&#xff0c;可以直接…

【Canvas与诗词】《登科后》唐.孟郊

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>昔日龌龊不足夸</title><style type"text/css"&g…