【C语言】每日一题(杨氏矩阵查找数)

news2024/11/24 16:48:53

目录

  • 杨氏矩阵介绍:
  • 方法:
  • 思路:
  • 代码实现:

杨氏矩阵介绍:

既然在杨氏矩阵中查找数,那什么是杨氏矩阵呢?

矩阵的每行从左到右是递增的,矩阵从上到下是递增的。

例如:
在这里插入图片描述

方法:

看到这题我们马上就可以想到遍历一遍数组,但无疑这是效率最低的算法,就不展开详细来讲了

那还有什么样的算法呢?

我们发现这歌矩阵是特殊的:左到右是递增的,矩阵从上到下是递增
可以利用这个规律来做题

思路:

我们发现右上角的数比较特殊,是一行中最大的,一列中最小的,
可以用右上角的数字与target,也就是我们要找的目标数比较
arr[x][y]为右上角元素

有三种情况:
1.当 arr[x][y]==target,我们返回
2.当 arr[x][y]>target,说明target有可能在这列
则我们需要令 y--,向左进行缩减排查
3.当 arr[x][y]<target,说明target不可能在这一行,
需要 x++,到下一行继续寻找

代码实现:

//我们假设找到了返回1,没找到返回1
int find(int arr[][3], int row, int col,int target)
{
	int x = 0;
	int y = col - 1;
	while (x <= row && y >= 0)
	{
		if (arr[x][y] == target)
			return 1;
		else if (arr[x][y] < target)
			x++;
		else
			y--;
	}
	return 0;//没找到时返回0
}
int main()
{
	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int target = 0;
	scanf("%d", &target);
	int ret = find(arr, 3, 3, target);
	if (ret == 1)
		printf("找到了\n");
	else
		printf("没找到\n");
	return 0;
}

那如果我们要实现返回下标的又该如何写呢?
C语言中是不存在同时返回2个参数的方法的
不过
我们可以将两个数的地址传参,用解引用进行对原数的修改

代码实现:

void find(int arr[][3], int* row, int* col, int target)
{
	int x = 0;
	int y = 2;
	while (x <= row && y >= 0)
	{
		if (arr[x][y] == target)
		{
			*row = x;
			*col = y;
			return;
		}
		else if (arr[x][y] < target)
			x++;
		else
			y--;
	}
	*row = -1;
	*col = -1;
}
int main()
{
	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int target = 0;
	scanf("%d", &target);
	int x = 3;
	int y = 3;
	find(arr, &x, &y, target);
	if (x != -1)
		printf("找到了,下标是%d %d\n", x, y);
	else
		printf("没找到\n");
	return 0;
}

欢迎大家纠错与讨论

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

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

相关文章

四)Stable Diffussion使用教程:图生图

这一篇来说说图生图。 除了文生图之外&#xff0c;SD常用的还有图生图模式。 图生图&#xff0c;顾名思义就是使用一张图去让AI生成自己喜欢的另一张图。 有时候我们有一张喜欢的图&#xff0c;但是希望换一种颜色方案&#xff0c;这时就可以通过图生图的方式去实现了&#…

Python Asyncio 调用 CPU 多核工作

前言 Python 的 Asyncio 适合异步处理 IO 密集型的事务, 比如 HTTP 请求, 磁盘读写, 数据库操作等场景. 如果使用传统的顺序执行代码, 需要等待每次 IO 事务进行完成后才可以继续后面的代码. 通过在定义函数时添加修饰词 async 可以将其设置为异步函数, 后续配合 Asyncio 可以…

【MySQL】MySQL对于千万级的数据库或者大表怎么处理?

大致的思路 第一优化你的sql和索引&#xff1b; 第二加缓存&#xff0c;memcached,redis&#xff1b; 第三以上都做了后&#xff0c;还是慢&#xff0c;就做主从复制或主主复制&#xff0c;读写分离&#xff0c;可以在应用层做&#xff0c;效率高&#xff0c;也可以用三方工…

前端面试题JS篇(3)

["1", "2", "3"].map(parseInt) 答案是多少? 答案&#xff1a;[1, NaN, NaN] 原因&#xff1a;[1, NaN, NaN]因为 parseInt 需要两个参数(val, radix)&#xff0c;其中 radix 表示解时用的基数。 map 传了 3 个(element, index, array) &…

【好书推荐】《速学Linux:系统应用从入门到精通》

目录 前言一、为什么学习Linux系统二、Linux系统的应用领域&#xff11;.Linux在服务器的应用&#xff12;.嵌入式Linux的应用&#xff13;.桌面Linux的应用 三、Linux的版本选择1、经验人士使用的Debian2、以桌面应用为主的Ubuntu3、以经典桌面配置为主的Mint4、社区企业操作系…

CTFhub_SSRF靶场教程

CTFhub SSRF 题目 1. Bypass 1.1 URL Bypass 请求的URL中必须包含http://notfound.ctfhub.com&#xff0c;来尝试利用URL的一些特殊地方绕过这个限制吧 1.利用?绕过限制urlhttps://www.baidu.com?www.xxxx.me 2.利用绕过限制urlhttps://www.baidu.comwww.xxxx.me 3.利用斜…

ctfshow-web-【nl】难了

0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 题目 0x02 Write Up 这里首先看到只要当1小于4的时候才可以执行命令。这里看到题目【nl】&#xff0c;先查一下nl的含义&#xff0c;这个命令是将文件里的…

Eureka 笔记

服务端&#xff1a; 创建springBoot 项目 1.步骤 导入在pom.xml中 导入 eureka-server的 jar包 2.步骤 在主方法加注解 EnableEurekaServer 3. 步骤 在配置config 1.步骤pox.xml: <?xml version"1.0" encoding"UTF-8"?&g…

瑞吉外卖第二天

问题分析 前面我们已经完成了后台系统的员工登录功能开发&#xff0c;但是目前还存在一个问题&#xff0c;接下来我们来说明一个这个问题&#xff0c; 以及如何处理。 1). 目前现状 用户如果不登录&#xff0c;直接访问系统首页面&#xff0c;照样可以正常访问。 2). 理想…

Java 【异常】

一、认识异常 Exception 在 Java 中&#xff0c;将程序执行过程中发生的不正常行为称为异常 。 异常是异常exception&#xff0c;报错是报错error 1.算数异常 0不能作为除数&#xff0c;所以算数异常 2.空指针异常 arr不指向任何对象&#xff0c;打印不出arr的长度&#xff0c;…

【动态规划刷题 12】等差数列划分 最长湍流子数组

139. 单词拆分 链接: 139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: …

思腾合力GPU服务器

布局智能生产基地&#xff01;经开区思腾合力超前助力“东数西算”&#xff01; 2022-04-20 18:41泰达服务 算力作为数字经济的核心生产力&#xff0c;是国民经济发展的重要基础设施。经开区企业思腾合力在“十四五”开局之年打造出集研发、生产、制造为一体的人工智能产业园…

【C++】常用拷贝和替换算法

0.前言 1.copy #include <iostream> using namespace std;// 常用拷贝算法 copy #include<vector> #include<algorithm>void myPrint(int val) {cout << val << " "; }void test01() {vector<int>v;for (int i 0; i < 10; i…

@Autowired和@Resource

文章目录 简介Autowired注解什么是Autowired注解Autowired注解的使用方式Autowired注解的优势和不足 Qualifier总结&#xff1a; Resource注解什么是Resource注解Resource注解的使用方式Resource注解的优势和不足 Autowired vs ResourceAutowired和Resource的区别为什么推荐使用…

Django+Nginx+uWSGI+Supervisor实战

大家好&#xff0c;真的是许久没有更新文章了&#xff0c;甚是想念&#xff0c;最近这段时间事情很多&#xff0c;家里的事情、工作的事情&#xff0c;真没有太多时间去码文章&#xff0c;其实已经搁置了些许文章&#xff0c;没有整理&#xff0c;趁着这段时间风平浪静&#xf…

MSOS604A是德科技keysight MSOS604A示波器

181/2461/8938Infiniium S系列示波器融合了创新技术&#xff0c;旨在提供卓越的测量。新的10位ADC和低噪声前端技术协同工作&#xff0c;提供高达8 GHz的性能和业界最佳的信号完整性。一个高级框架&#xff0c;配有可快速启动的固态硬盘、可轻松触摸的15英寸电容式显示屏和可快…

洛谷P8814:解密 ← CSP-J 2022 复赛第2题

【题目来源】https://www.luogu.com.cn/problem/P8814https://www.acwing.com/problem/content/4732/【题目描述】 给定一个正整数 k&#xff0c;有 k 次询问&#xff0c;每次给定三个正整数 ni&#xff0c;ei&#xff0c;di&#xff0c;求两个正整数 pi&#xff0c;qi&#xf…

取消合并单元格并快速填充

例如&#xff1a; 步骤如下&#xff1a; 1/ 取消合并单元格 2/ 全选表格 3/ excel导航栏 - 开始 - 查找和选择- 定位条件 快捷键&#xff1a;ctrlG 4/ 选择“空值” - 点击确定 5/ 输入公式 “a2" 注意&#xff0c;自定定位在a3单元格 输入完公式后&#xff0c;按…

file-storage-sdk项目开发中的踩坑记录

文章目录 file-storage-sdk项目开发中的踩坑记录问题1&#xff1a;项目启动报错&#xff1a;Attribute "click" appears more than once in element问题2&#xff1a;前端对话框被遮挡问题3&#xff1a;RequestBody无法接收表单数据问题4&#xff1a;文件上传失败问题…