【算法】【数组与矩阵模块】在排好序的矩阵中找数,时间复杂度O(M+N)
目录
- 前言
- 问题介绍
- 解决方案
- 代码编写
- java语言版本
- c语言版本
- c++语言版本
- 思考感悟
- 写在最后
前言
当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~
在此感谢左大神让我对算法有了新的感悟认识!
问题介绍
原问题
给定二维数组arr,arr为排好序的数组,其中arr同时满足,从左到右递增,从上到下递增,给定一个数k,在尽可能少的时间内找到数k即可
如:
arr = [0125234744485779]\begin{bmatrix} 0 & 1 & 2 & 5 \\ 2 & 3 & 4 & 7 \\ 4 & 4 & 4 & 8 \\ 5 & 7 & 7 & 9 \end{bmatrix}0245134724475789
k = 7
结果:true
解决方案
原问题:
假设arr为N*M的矩阵
1、从右上角或者左下角开始,如果k < arr[N][0] ,说明k一定小于arr的第N行,行–
2、如果k > arr[N][0] ,说明k一定大于arr的第0列,列++
3、通过以上规则,查找到数后返回true,找不到并且越界后则退出循环,返回false
代码编写
java语言版本
原问题:
/*** 二轮测试:在排好序的矩阵中找数* @param arr* @param k* @return*/public static boolean isContainsCp1(int[][] arr, int k) {if (arr == null || arr.length == 0) {return false;}int row = arr.length - 1;int col = 0;while (row >= 0 && col <= arr[0].length - 1) {int cur = arr[row][col];if (cur == k) {return true;}else if (cur > k) {// 当前行不会存在krow--;}else {// 当前列不会存在kcol++;}}return false;}public static void main(String[] args) {System.out.println(isContainsCp1(new int[][]{{0,1,2,5},{2,3,4,7},{4,4,4,8},{5,7,7,9}}, 7));}
c语言版本
正在学习中
c++语言版本
正在学习中
思考感悟
每一次的比较都能够至少排除一行或者一列,这个速度应该是比较快的了,如果大家有更好的办法记得评论区各显神通哦~
写在最后
方案和代码仅提供学习和思考使用,切勿随意滥用!如有错误和不合理的地方,务必批评指正~
如果需要git源码可邮件给2260755767@qq.com
再次感谢左大神对我算法的指点迷津!
相关文章:
【算法】【数组与矩阵模块】在排好序的矩阵中找数,时间复杂度O(M+N)
目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 …...
【Java|基础篇】计算机中数据的存储规则
文章目录前言:1.计算机中的数据2.二进制的介绍二进制的运算规则常见的进制3.字符的存储4.汉字的存储5.图片的存储6.音频的存储总结:前言: 本篇文章只是为了科普 计算机中数据的存储规则 1.计算机中的数据 计算机的数据大致分为三类:文本数据,图片和音频 注:视频是图片和音频…...
RestTemplate使用HttpClient连接池
文章目录RestTemplate使用HttpClient连接池ClientHttpRequestFactorySimpleClientHttpRequestFactorySimpleClientHttpRequestFactory 设置超时时间HttpURLConnection的缺点HttpComponentsClientHttpRequestFactoryPoolingHttpClientConnectionManager配置连接池HttpClient总结…...
Python 操作Redis
在 Python中我们使用 redis库来操作 Redis数据库。Redis数据库的使用命令这里就不介绍了。 需要安装 redis库。检查是否安装redis: pip redis 如果未安装,使用 pip命令安装 redis。 pip install redis #安装最新版本 一、Redis连接 Redis提供两个类 Re…...
CEC2020:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2020(提供MATLAB代码
一、鱼鹰优化算法简介 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…...
词对齐 - MGIZA++
文章目录关于 MGIZAgiza-py安装 MGIZA命令说明mkclsd4normhmmnormplain2sntsnt2coocsnt2coocrmpsnt2plainsymalmgizageneral parameters:No. of iterations:parameter for various heuristics in GIZA for efficient training:parameters for describing the type and amount o…...
GUI 之 Tkinter编程
GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。 1. Tkinter 之初体验 import tkinter as tkroot tk.Tk() # 创建一个窗口root.title(窗口标题)# 添加 label 组件 theLabel tk.Label(root, text文本内容) theLabel.p…...
【软件测试】性能测试面试题都问什么?面试官想要什么?回答惊险避坑......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、你认为不同角色关…...
后端开发基础能力以及就Java的主流开发框架介绍
前言:java语言开发转后端,必须了解后端主流的一些东西,共勉。 后端开发需要具备以下基础能力: 1.编程语言:熟练掌握至少一门编程语言,如Java、Python、Ruby、PHP、C#等。 2.数据结构和算法:具…...
H2数据库连接时用户密码错误:Wrong user name or password [28000-214] 28000/28000 (Help)
H2数据库连接时用户密码错误: 2023-03-03 08:25:07 database: wrong user or password; user: "SA" org.h2.message.DbException: Wrong user name or password [28000-214]出现的问题配置信息原因解决办法org.h2.message.DbException: Wrong user name or password …...
青岛诺凯达机械盛装亮相2023济南生物发酵展,3月与您相约
BIO CHINA生物发酵展,作为生物发酵产业一年一度行业盛会,由中国生物发酵产业协会主办,上海信世展览服务有限公司承办,2023第10届国际生物发酵展(济南)于2023年3月30-4月1日在山东国际会展中心(济…...
【JAVA程序设计】【C00111】基于SSM的网上图书商城管理系统——有文档
基于SSM的网上图书商城管理系统——有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架开发的网上在线图书售卖商城项目,本项目分为三种权限:系统管理员、卖家、买家 管理员角色包含以下功能: 用户信息管理、权限管理、订…...
基于卷积神经网络CNN的三相故障识别
目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,为节能减排,减少电能损…...
Java工厂设计模式详解,大厂的Java抽象工厂模式分享!
我是好程序员-小源!本期文章主要给大家分享:Java工厂设计模式。文中使用通俗易懂的案例,使你快速学习和轻松上手!一、什么是Java抽象工厂模式1. Java抽象工厂是23种设计模式中创建型模式的一种,Java抽象工厂是由多个工…...
Git 企业级分支提交流程
Git 企业级分支提交流程 首先在本地分支hfdev上进行开发,开发后要经过测试。 如果测试通过了,那么久可以合并到本地分支develop,合并之后hfdev和development应该完全一样。 git add 文件 git commit -m ‘注释’ git checkout develop //切换…...
C/C++每日一练(20230303)
目录 1. 字符串相乘 2. 单词拆分 II 3. 串联所有单词的子串 1. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3"…...
Python3-条件控制
Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程: if 语句 Python中if语句的一般形式如下所示: if condi…...
KDZD地埋电缆故障测试仪
一、产品特性 ★电缆故障测试仪(闪测仪) (1)使用范围广:用于测量各种不同截面、不同介质的各种电力电缆、高频同轴电缆,市话电缆及两根以上均匀铺设的地埋电线等电缆高低阻、短路、开路、断线以及高阻泄漏…...
爆款升级!新系列南卡Neo最强旗舰杀到,业内首款无线充骨传导耳机!
中国专业骨传导耳机品牌NANK南卡于近日发布了全新南卡Neo骨传导运动耳机,打造一款佩戴最舒适、音质体验最好的骨传导耳机。推出第2代声学響科技技术,提供更优质的开放式骨传导听音体验,透过不一样的音质体验,打造更好的骨传导耳机…...
基于Spring Boot+Thymeleaf的在线投票系统
文章目录 项目介绍主要功能截图:后台登录注册个人信息展示投票数据显示首页展示对战匹配分数排行榜部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅…...
Emacs集成ChatGPT:AI助手无缝融入编辑器工作流
1. 项目概述:在Emacs中集成ChatGPT的魔法工具作为一名在Emacs生态里摸爬滚打了十多年的老用户,我对于在编辑器里“折腾”各种生产力工具一直乐此不疲。当ChatGPT这类大语言模型(LLM)横空出世时,我的第一反应就是&#…...
Eclipse框架:插件化架构与开发工具深度解析
1. Eclipse框架的起源与演进Eclipse最初由IBM及其子公司Object Technology International(OTI)在1999年启动开发,初衷是为WebSphere产品线提供更好的应用开发支持。这个完全用Java编写的平台,最初投入了40名开发人员和超过4000万美…...
ESP32-C3原理图设计避坑指南:从电源到天线,新手最容易忽略的7个细节
ESP32-C3原理图设计避坑指南:从电源到天线,新手最容易忽略的7个细节 第一次接触ESP32-C3原理图设计时,很多开发者会直接参考官方规格书,但实际调试时却发现各种奇怪的问题:电源不稳定导致Wi-Fi断连、复位电路响应迟缓、…...
5个关键步骤掌握PyAEDT:从安装到高级仿真实战指南
5个关键步骤掌握PyAEDT:从安装到高级仿真实战指南 【免费下载链接】pyaedt AEDT Python Client Package 项目地址: https://gitcode.com/gh_mirrors/py/pyaedt PyAEDT作为Ansys Electronics Desktop的Python客户端库,为工程师提供了强大的电子设计…...
全球扩张加剧法律复杂性,但仅有7%的企业实现全面合规
• 47%的总法律顾问表示,实际控制人规则对法律运营构成了最大的风险 • 44%的企业对能否满足跨境数据安全要求缺乏信心 随着企业在2026年加速全球扩张,合规工作却未能跟上步伐。事实上,根据全球领先的商业管理与合规解决方案提供商CSC的一项最…...
初识java(三):运算符
目录 一:什么是运算符 二:算术运算符 1. 基本四则运算符:加减乘除模( - * / %) 2.增量运算符 - * % 3. ⾃增/⾃减运算符 -- 三:关系运算符 四:逻辑运算符(重点) 1.逻辑与&& 2.逻辑 || …...
TS-182快速打通Modbus干变温控箱与PROFINET PLC连接
项目背景:在电力配电系统中,干式变压器的安全运行离不开温控箱的实时监测与保护。作为变压器温控箱的生产厂商,您是否遇到过这样的困扰:客户现场的主控系统采用西门子S7-1500 PLC(PROFINET协议),…...
如何在Dev-C++中选择TDM-GCC编译器
在Dev-C中选择TDM-GCC编译器的步骤如下:打开编译器设置启动Dev-C,点击顶部菜单栏的 "工具" → "编译器选项"选择编译器在打开的窗口中:切换到 "编译器" 选项卡勾选 "在连接器命令行加入以下命令"在下…...
从苹果FBI解锁案看现代加密技术与工程师伦理抉择
1. 事件背景与核心争议点2016年初,美国联邦调查局(FBI)向苹果公司提出了一项史无前例的要求:协助解锁一部属于圣贝纳迪诺枪击案枪手的iPhone 5c。这部手机设置了密码保护,并启用了“数据自毁”功能,即在连续…...
ARM调试状态与Halting Step机制详解
1. ARM调试状态机制深度解析在嵌入式系统开发中,调试功能的重要性不言而喻。ARM架构提供了一套完整的调试机制,其中调试状态(Debug State)是核心组成部分。当处理器进入调试状态时,会暂停正常程序执行,将控…...
