杨氏矩阵查找算法

  有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。

要求:时间复杂度小于O(N);

1.首先更直观地了解一下杨氏矩阵:

123
456
789

                                                        这就是一个简单的杨氏矩阵。

 

  2.查找思路

(1)每次查找都是与最右上角位置地元素进行比较;

(2)如果目标数字比最右上角位置地元素大,则去掉最上面的一行;

(3)如果目标数字比最右上角位置地元素小,则去掉最右边的一列;

  • 比如说目标数字是 8 ,先与最右上的 3 进行比较, 8 > 3 ,说明 8 大于这一行所有的元素,8 必定不在 3 所在的行内,所以去掉: 

                                                       

  • 去掉一行后,又与最右上的 6 进行比较,8 > 6 ,说明8 大于这一行所有的元素,8 必定不在 6 所在的行内,所以去掉:

                                                        

  • 又去掉一行后,与最右上的 9 进行比较,8 < 9 ,说明 8 小于 9 这一列所有的元素(此时因为第一第二行已经去掉了,所以剩下 9 这一列的元素必定都大于8),8 必定不在 9 所在的列内,所以去掉:

                                                        

  • 当矩阵中比较的元素就是目标数字时,证明找到了,目标数字在矩阵当中。

3.具体代码如下:

#include<stdio.h>
SearchNum(int arr[3][3], int target,int  row,int col)
{
	int i = 0;
	int j = col - 1;
	while (i <= row && j > 0)
	{
		if (arr[i][j] < target)
		{
			i++;
		}
		else if (arr[i][j] > target)
		{
			j--;
		}
		else return 1;

	}
	return 0;

}


int main()
{
	int arr[3][3] = {1,2,3,4,5,6,7,8,9};
	int target = 8;
	int row = 3;
	int col = 3;

	if (SearchNum(arr, target, row, col))
	{
		printf("目标数字在矩阵当中\n");
	}
	else
	{
		printf("目标数字不存在矩阵当中\n");
	}
	return 0;
}

当然我们可以举一些更加大的矩阵例子来进行分析,这样思路会更加清晰。

谢谢大家!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java】初识网络编程

文章目录 前言✍一、互联网的发展1.独立模式2.网络的出现局域网LAN广域网WAN ✍二、网络编程概述✍三、网络编程中的术语介绍IP地址端口号协议OSI七层模型TCP\IP四层模型 ✍四、协议的层级之间是如何配合工作的 前言 在本文中&#xff0c;会对网络编程的一些术语进行解释&#…

MySQL变量的声明与使用

set userName 刘德华; SELECT userName : 刘青云; SELECT userName as 读取到的userName变量值; set x5,y7; SELECT x y as 57的结果; set dx0.55,dy2; SELECT dx dy; set result(select dx dy) SELECT result; set cityName1Kabul; SET cityName2Qandahar; SET cityName3…

【Qt 开发基础体系】字符串类应用和常用的数据类型

文章目录 1. Qt 字符串类应用1.1 操作字符串1.2 QString::append()函数1.3 QString::sprintf()函数1.4 QString::arg()函数 2. 查询字符串2.1 函数 QString::startsWith()2.2 函数 QString::contains()2.3 函数 QString::toInt()2.4 函数 QString::compare()2.5 将 QString 转换…

RS232引脚方向及意义与接线参考

RS232引脚方向及定义编号引脚意义方向作为IO使用说明1CD载波检测(Carrier Detect)计算机《调制解调器输入调制解调器通知计算机有载波被侦测到2RXD接收(Receive)计算机《调制解调器 接收数据3TXD发送(Transmit)计算机》调制解调器 发送数据4DTR数据终端设备(DTE)备好(Data Te…

揭秘豆瓣网站爬虫:利用lua-resty-request库获取图片链接

介绍 在网络数据采集领域&#xff0c;爬虫技术在图片获取方面具有广泛的应用。而豆瓣网站作为一个内容丰富的综合性平台&#xff0c;其图片资源也是广受关注的热点之一。本文将聚焦于如何利用Lua语言中的lua-resty-request库&#xff0c;高效地从豆瓣网站获取图片链接。我们将…

RAG 检索的底座:Milvus Cloud向量数据库

在业界实践中,RAG 检索通常与向量数据库密切结合,也催生了基于 ChatGPT + Vector Database + Prompt 的 RAG 解决方案,简称为 CVP 技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs),通过将 LLMs 生成的查询转换为向量,使得 RAG 系统能在向…

MAcA-PEG-MAcA,Methacrylamide-PEG-Methacrylamide可作为高分子链转移剂或高分子乳化剂使用

【试剂详情】 英文名称 MAcA-PEG-MAcA&#xff0c; Methacrylamide-PEG-Methacrylamide 中文名称 聚乙二醇二苯甲醛&#xff0c; 苯甲醛-聚乙二醇-苯甲醛 外观性状 由分子量决定&#xff0c;固体或者液体。 分子量 0.4k&#xff0c;0.6k&#xff0c;1k&#xff0c;2k&am…

发电机组远程管理,提升管控力,降低运维成本

发电机组是指发电机发动机以及控制系统的总称&#xff0c;用来把发动机提供的动能转化为电能。它通常由动力系统、控制系统、消音系统、减震系统、排气系统组成。发电机组远程管理系统利用物联网技术与PLC远程控制模块集成解决方案&#xff0c;在提高发电机组的运行效率、降低运…

用于YouTube推荐的深度神经网络YouTube DNN

这篇论文是最近参加组会看的一篇新论文&#xff0c;论文虽然是2016年出的论文&#xff0c;但是它是YouTube发表的&#xff0c;且是应用在YouTube这样超级大的平台上的一篇工业界的推荐系统的论文&#xff0c;我读完之后也觉得论文有一些可取之处的&#xff0c;所以和大家分享一…

【Chrome实用命令笔记】

文章目录 Chrome实用命令笔记1、chrome基本介绍2. 打开开发者工具&#xff08;DevTools&#xff09;方法一&#xff1a;快捷键方法二&#xff1a;右键菜单方法三&#xff1a;浏览器设置 2. 开发者工具面板Elements面板Console面板Sources面板Network面板Performance面板Memory面…

数据结构:图

数据结构&#xff1a;图 前言 在自动化程序分析中&#xff0c;图和树的一些算法起到了至关重要的作用&#xff0c;所以在开始自动化程序分析的研究前&#xff0c;我用了两天复习了一遍数据结构中的图。本章主要内容有图的基本概念&#xff0c;图的存储和图相关的经典算法&…

十二届蓝桥杯Python组1月中/高级试题 第五题

** 十二届蓝桥杯Python组1月中/高级试题 第五题 ** 第五题&#xff08;难度系数 5&#xff0c;35 个计分点&#xff09; 提示信息&#xff1a; 平均数&#xff1a;是指在一组数据中所有数据之和再除以这组数据的个数。 如&#xff1a;“1&#xff0c;2&#xff0c;3&#xf…

品鉴中的文化碰撞:如何理解和欣赏不同文化背景下的红酒

红酒作为世界各地广泛生产的产品&#xff0c;具有丰富的文化内涵。不同国家、地区和民族的红酒文化各具特色&#xff0c;反映了当地的历史、传统、习俗和生活方式。在品鉴云仓酒庄雷盛红酒时&#xff0c;理解和欣赏不同文化背景下的红酒是提升品鉴体验的重要一环。 首先&#x…

目前市面上堡垒机厂家有哪些?会帮忙部署吗?

随着大家对于网络安全的重视&#xff0c;越来越多的企业准备采购堡垒机了。不少企业在问&#xff0c;目前市面上堡垒机厂家有哪些&#xff1f;会帮忙部署吗&#xff1f;这里我们小编就来简单为大家回答一下&#xff0c;仅供参考哈&#xff01; 目前市面上堡垒机厂家有哪些&…

idea开发工具 项目使用Spring框架开发解决yml配置文件不识别问题,解决方案教程

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 问题点&#xff0c;配置文件不识别 解决流程 添加出来的yml配置文件&#xff0c;点击&#x1f197; 问题已解决 如果问题没有解决的话&#xff0c;第二种方法 这是识别成功的 技术细节 项目重构Maven环境…

libmodbus使用

安装可以看这个博客&#xff1a; https://blog.csdn.net/hanhui22/article/details/105786762 它的安装可以&#xff0c;但是编译测试看不太懂&#xff0c;我没跟着它的编译&#xff0c;完了后把/lib下的 放到开发板的/usr/lib下 编写代码: #include <stdio.h> #inclu…

VS 编译动态链接库dll及其动态链接库的调用方式

VS 编译动态链接库及其动态链接库的调用方式 1编译动态链接库 (1)Step01: 打开VS (2)Step02: 新建项目 (3)Step03: 选择动态链接库&#xff08;搜索DLL&#xff09; (4)Step04: 新建头文件&#xff08;如MyDLL.h) 该文件编写对外暴露的接口函数&#xff0c;即在该函数内声…

deepspeed入门

一、目录 deepspeed 简介库安装配置deepspeed 实现demo如何配置deepspeed参数案例分析 二、实现 deepspeed 简介 Deepspeed是微软的大规模分布式训练工具。专门用于训练超大模型。主要目标是降低训练期间的内存占用、通信开销和计算负载&#xff0c;从而使用户能够训练更大的…

上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝

本文目录 前言1、视频编程实战1.1、熟悉代码库中的代码1.2、参考现有代码编写新代码 2、下载使用教程3、使用体验3.1、AutoWork 产品测评3.2、解决有关ajax请求后重定向问题3.3、询问编程相关知识3.3.1、cookie和session的区别与联系3.3.2、数据库中主键外键的相关知识 4、问题…

ARTS Week 26

Algorithm 本周的算法题为 35. 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1:输入: nums [1,…