杨氏矩阵问题

杨氏矩阵问题

问题描述:

  • 杨氏矩阵定义:同行元素从左向右依次递增,同列元素从上到下依次递增,注意:杨氏矩阵行列数可以不相等

  • 杨氏矩阵举例:

    123
    456
    789
  • 在杨氏矩阵中查找一个元素key,要求时间复杂度小于O(n)

解题思路:

  • 我们关注的焦点在于杨氏矩阵右上角的元素(或左下角的元素)

  • 以杨氏矩阵右上角的元素为例,去上图所示的矩阵

  • 如果key大于右上角的元素则可以消掉一行,如果key小于右上角的元素则可以消掉一列

  • 假设key=7,查找流程如下:

    • key>3,消掉第一行

    • ---------------
      456
      789
    • key>6,消掉第二行

    • ---------------
      ---------------
      789
    • key<9,消掉第三列

      ---------------
      ---------------
      78----
    • key<8,消掉第二列

    • ---------------
      ---------------
      7--------
    • 找到了key,坐标为第三行,第一列

代码实现

#define  _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
#include<string.h>
#include<assert.h>
int  findNum(int arr[3][3],int key, int* row, int* col)
{int m = 0;int n = *col - 1;while (m<*row&&n>=0){if (key < arr[m][n]){n--;}else if (key > arr[m][n]){m++;}else{*row = m;*col = n;return 1;}}return 0;
}int main()
{int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };int key = 7;int row = 3;int col = 3;//返回形参数int ret=findNum(arr, key, &row, &col);if (ret == 1){printf("找到了%d,该元素的位置为%d行, %d列",key, row+1, col+1);}else{printf("对不起您查找的元素不存在");}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10水印烦死了_win10系统下word去水印的方法【图文】

很多win10系统用户都会从网上下载word文档来进行修改&#xff0c;而在下载的word文档中有时候会有水印&#xff0c;而有些用户并不知道要怎么去除word中水印&#xff0c;为此win7之家小编这就给大家带来win10系统下word去水印的方法吧。方法一、1、进入「设计」-「页面背景」-「…

python中如何对dict对象进行排序

有程序&#xff1a;mydict {carl:40,alan:2,bob:1,danny:3}for key in sorted(mydict.iterkeys()):print "%s: %s" % (key, mydict[key])输出结果为&#xff1a; alan: 2 bob: 1 carl: 40 danny: 3 使用key来进行dict的排序&#xff1a; keylist mydict.keys() key…

富丽的SUSE Linux 10.3(1)

作者: hr127 出自: http://www.linuxdiyf.com版权声明&#xff1a; 原创作品&#xff0c;容许转载&#xff0c;转载时请务必以超链接编制标明文章 原始出处 、作者信息和本声明。不然将追究执法责任。 转载于:https://www.cnblogs.com/zgqjymx/archive/2011/03/07/1976023.htm…

ios CGRec用法

/*rect(x,y,width,height);width&#xff0c; height正负代表了从原点的绘制方向,矩形的长宽都是取得绝对值*/// Do any additional setup after loading the view, typically from a nib.#pragma mark -------------------------------------------生成CGRect----------------…

怎么判断子元素距离父元素顶部位置_js获取元素的距离父元素、窗口的距离offsetTop,offsetHeight,clientHeight...

前言相信很多项目中都会有这样一个小需求(PC端&#xff0c;移动端则是点击)&#xff0c;鼠标移上某个菜单或者某个位置&#xff0c;显示一个弹出框&#xff0c;移开则隐藏弹出框&#xff0c;就是css中hover效果&#xff0c;这种通常做法是每个子菜单下都有一个弹框&#xff0c;…

matlab实现同态滤波

定义 一幅图像可看成由两部分组成&#xff0c;即 fi代表随空间位置不同的亮度&#xff08;Illumination&#xff09;分量&#xff0c;其特点是缓慢变化&#xff0c;集中在图像的低频部分。fr代表景物反射到人眼的反射&#xff08;Reflectance&#xff09;分量&#xff0c;其特…

WordPress Mail Subscribe List插件‘sml_name’参数HTML注入漏洞

漏洞名称&#xff1a;WordPress Mail Subscribe List插件‘sml_name’参数HTML注入漏洞CNNVD编号&#xff1a;CNNVD-201306-205发布时间&#xff1a;2013-06-14更新时间&#xff1a;2013-06-14危害等级&#xff1a; 漏洞类型&#xff1a;输入验证威胁类型&#xff1a;远程CVE编…

大摩维持浩大游戏“增持”评级

网易科技讯 3月3日动静&#xff0c;摩根士丹利往日宣布投资陈诉&#xff0c;指出浩大游戏第四季度业绩凌驾预期&#xff0c;具有多个利好要素&#xff0c;另外该公司在Mochi Media平台方面的极力也值得垂青。因此&#xff0c;摩根士丹利维持浩大游戏“增持”的评级。以下为陈诉…

数字图像处理频域滤波实现低通与高通滤波(包含matlab代码)

低通滤波器 理想低通滤波 作用&#xff1a;保留频谱图中圆内低频分量&#xff0c;截断频谱图中圆外高频分量函数表示&#xff1a; 假设频谱中心在 (M/2,N/2)处&#xff0c;则任意频谱成分(u,v) 到中心&#xff08;原点&#xff09;的距离D(u,v) 定义为&#xff1a; D0为低通滤…

api报错 javaee maven_JavaEE关于Maven的配置与学习

关于Maven的配置与学习1. 简介官方说法&#xff1a;Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a projects build, reporting and documentation from a central piece …

jQuery以Post方式发送请求并获取返回的文件供下载!

用ajax请求文件下载当然是可以的&#xff0c;不用有返回值&#xff0c;代码差不多是这样&#xff1a; try{string FileName ".//doc//[大家网]Beginning.ASP.NET.2.0.E-Commerce.in.C#.2005.From.Novice.to.Professional[www.TopSage.com].pdf";FileName ".//…

Direct3D的一些小贴士收藏(转载)

GPU性能调试&#xff1a; 通常来说&#xff0c;使用CPU时间事件来调试GPU是低效并且是不准确的。D3D API在多数命令下会阻塞&#xff0c;甚至是Draw函数。它会在一些时间片上做一些真正的工作&#xff0c;而这往往是不可预知的。因此&#xff0c;GPU的性能调试只能用PIX或者是其…

数字图像处理同态滤波(matlab)

定义 一幅图像可看成由两部分组成&#xff0c;即 fi代表随空间位置不同的亮度&#xff08;Illumination&#xff09;分量&#xff0c;其特点是缓慢变化&#xff0c;集中在图像的低频部分。fr代表景物反射到人眼的反射&#xff08;Reflectance&#xff09;分量&#xff0c;其特…

Java并发编程-ReentrantLock源码分析

一、前言 在分析了 AbstractQueuedSynchronier 源码后&#xff0c;接着分析ReentrantLock源码&#xff0c;其实在 AbstractQueuedSynchronizer 的分析中&#xff0c;已经提到过ReentrantLock&#xff0c;ReentrantLock表示下面具体分析ReentrantLock源码。 二、ReentrantLock数…

谷歌浏览器好用的复制粘贴插件_copybetter增强复制 很好用的chrome复制粘贴插件 解除页面复制限制...

使用说明&#xff1a;增强复制(copybetter) 简介增强复制(copybetter)是一款国人开发的chrome浏览器复制增强扩展插件&#xff0c;作者参考了Copy Fixer和Autocopy两个扩展插件开发而成的。这里是他的个人网站&#xff1a;kodango.com。插件集成了关于复制粘贴功能的几个非常常…

绿色vmware 安装后看不到虚拟的网卡

绿色vmware 安装后看不到虚拟的网卡&#xff0c;按下面方法就可以添加。 1. 到Vmware 安装目录&#xff0c;运行 vmnetcfg,运行后出现虚拟网络编辑器 2. 转到主机虚拟适配器&#xff0c;单击添加 3. 转到网络连接就可以看到新增的vmware 虚拟网卡 转载于:https://www.cnblogs.c…

C语言strtok函数的用法

strtok是字符串切割函数 定义 参数一&#xff1a;待切割字符串参数二&#xff1a;分隔符集合首次调用时传递参数为&#xff1a; strtok(str,seps);之后再次调用时传递参数为: strtok(NULL,seps);​ 若可以切割&#xff0c;函数返回值为字符指针&#xff0c;各段切割好的字符串…

webservice接口等待时间_调用webservice超时问题的解决

1、web.config配置&#xff0c;里面增加&#xff1a;2、扩大代理类的超时限制&#xff0c;默认是90秒YourWebService yws new YourWebService();yws.Timeout 1200000; //20分钟3、IIS属性-网站 连接超时时间 1200秒1、修改 app.config 文件&#xff0c;添加如下代码&#x…

UItableViewCell滑动删除时,调整cell子视图的位置大小

UItableViewCell滑动删除时&#xff0c;调整cell的位置大小是否显示等。CustomTableViewCell为UITableViewCell的子类&#xff0c;在实现文件中重写willTransitionToState方法。willTransitionToState是在cell改变显示状态的时候调用&#xff0c;有三种状态&#xff1a;typedef…

表的转置

表的转置useSSISdroptablePTVgocreatetablePTV(TimeID nvarchar(10),ResourceID int,KPI1 numeric(38,2),KPI2 numeric(38,2),KPI3 numeric(38,2),KPI4 numeric(38,2),KPI5 numeric(38,2))goinsertintoptv values(101,1,2.78,3,5,4,4)insertintoptv values(102,2,2.7,50,95,44,…