当前位置: 首页 > news >正文

C语言每日一题】——杨氏矩阵

【C语言每日一题】——倒置字符串😎

  • 前言🙌
    • 杨氏矩阵🙌
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享C语言每日一题】——杨氏矩阵~这里利用了数组指针的方法知识, 都是精华内容,可不要错过哟!!!😍😍😍

杨氏矩阵🙌

题目简述:
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
要求: 时间复杂度小于O(N);

解题思路分析: 😍

  • 这里要求 时间复杂度小于O(N);所以利用常规的遍历一遍数组的方法是不满足的。因为遍历数组的时间复杂度是O(N)。
  • 首先认真读题,分析解题思路。因为矩阵的每行从左到右是递增的,矩阵从上到下是递增的,所以第一行的最后一个元素就是这一行的最大值,也是这个元素所在列的最小值。每一行的最后一个元素都是该行的最大值
  • 第一步就是拿第一行的最后一个元素与我们查找的元素进行大小比较。
  • 如果比我们的 k 要大,在我说明该元素一定在该行上,或者不存在 。让 j - - ,对该行逐个逐个进行两两比较 。
  • 如果比我们的 k 要小,在我说明该元素一定在下一行上,或者不存在 。让 i + + ,对该列逐个逐个进行两两比较 。
  • 然后循环重复上述操作,直到找到元素后,再跳出循环。-这里定义一个flag 变量目的是为了将没有找到元素的信息打印出来,这也是题目的要求之一**
  • 按照这种方法时间复杂度是小于O(N)。

画图分析: 😍
在这里插入图片描述

解题源码分享: 😍

#include<stdio.h>void Find(int(*a)[3], int row, int col,int k)
{int i = 0;int flag = 0;int j = col - 1;while ((i>= 0 && i <= row - 1) && (j >= 0 && j <= col - 1) ){if (*(*(a + i) + j) > k){j--;}else if(*(*(a + i) + j) < k){i++;}else{flag = 1;printf("找到了元素,其下标为:%d ,%d\n", i, j);break;}}if(flag == 0)printf("找不到该元素\n");
}int main()
{int a[3][3] = { {1,2,3},{4,5,6}, {7,8,9} };int row = sizeof(a[0]) / sizeof(int);int col = sizeof(a) / sizeof(a[0]);int k = 0;scanf("%d", &k);Find(a,row,col,k);return 0;
}

程序输出结果验证: 😊
在这里插入图片描述

总结撒花💞

   本篇文章旨在分享C语言详解C语言每日一题】——杨氏矩阵。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

http://www.lryc.cn/news/28547.html

相关文章:

  • 最佳iOS设备管理器imazing 2.16.9官网Mac/Windows下载电脑版怎么下载安装
  • 八大排序算法之堆排序的实现+经典TopK问题
  • 使用AppSmith(PagePlug )低代码平台快速构建小程序应用实践
  • 第52章 短信验证服务和登录的后端定义实现
  • 谷歌验证码的使用
  • Git学习入门(1)- git的安装与配置
  • 【Python】使用Playwright断言方法验证网页和Web应用程序状态
  • libgdx导入blender模型
  • 【20230227】回溯算法小结
  • centos安装rocketmq
  • 汇编语言程序设计(二)之寄存器
  • 华为OD机试Golang解题 - 单词接龙 | 独家
  • Elasticsearch的搜索命令
  • 为什么人们宁可用Lombok,也不把成员设为public?
  • 【Redis】Redis 如何实现分布式锁
  • C++ 断言
  • C++修炼之练气期第五层——引用
  • 从企业数字化发展的四个阶段,看数字化创新战略
  • vulnhub five86-1
  • 28个案例问题分析---01---redis没有及时更新问题--Redis
  • [1.3_3]计算机系统概述——系统调用
  • Vue基础学习 第一个Vue程序 el挂载点 v-指令(1)
  • 前端页面性能
  • 2023-03-04 反思
  • 奇思妙想:超链接唤起本地应用
  • 初识数据结构——“数据结构与算法”
  • 华为OD机试Golang解题 - 计算网络信号
  • ESP32编译及运行错误记录
  • GEE开发之降雨(CHIRPS)数据获取和分析
  • TypeScript中面向对象