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

【C语言】每日一题(找到所有数组中消失的数字)

找到所有数组中消失的数字,链接奉上。
在这里插入图片描述

这里简单说一下,因为还没有接触到动态内存,数据结构,所以知识有限,也是尽力而为,结合题库的评论区找到了适合我的解法,以后有机会,会补上各种解法

方法

  • 暴力循环
  • 排序+分情况讨论

暴力循环

暴力循环依旧是最容易想到的,但是越容易想到的往往更耗费时间,也就意味着更容易超出时间界限。
思路:

双重for循环,外部控制1~n个数,内部遍历nums数组,两两比较记录没有出现的数字,即为消失的数字

代码实现:

static int arr[99999];//创建数组
int* finddisappearednumbers(int* nums, int numssize, int* returnsize)
{int count = 0;//计数器int n = 0;for (int j = 1; j <= numssize; j++){count = 0;//每次进入要重置for (int i = 0; i < numssize; i++){if (j == nums[i]){count++;break;}}if (count == 0)//为0说明未出现arr[n++] = j;}*returnsize = n;return arr;
}

排序+分情况讨论

思路:

排序是为了让数组有序,更好的进行操作
那么分情况讨论是怎么一回事
1~n设为循环变量i,进行遍历,
left=0设为下标,从0开始根据情况left++
再将nums[left]与i比较
i==nums[left]left++,因为会有重复的数字,比如1 2 2 2,这时,可以使用while循环
i!=nums[left]时,将i放入结果数组
注意:
数组有时会出现n(也就是numssize)大于当前数组最大值(nums[numssize-1])的情况,也就是类似: 1 2 2 2的情况,所以while中的left会超出界限,这时left==numssize,我们将剩下的for循环中未开始的i依次赋值给结果数组

代码实现:

int cmp(int* a, int* b)
{return *a - *b;
}
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){qsort(nums,numsSize,sizeof(int),cmp);int* res=malloc(sizeof(int) * numsSize);//结果数组,result*returnSize=0;int left=0;for(int i=1;i<=numsSize;i++){if(left<numsSize&&i!=nums[left])//注意:left要放前边,防止短路发生{res[(*returnSize)++]=i;//*returnsize随着结果数组的增加而增加,//最后返回的就是数组大小}if(left==numsSize){res[(*returnSize)++]=i;}//while要在最后进行,因为在前边会改变left//影响两个if的判断while(left<numsSize&&i==nums[left]){left++;}}return res;
}

欢迎大家纠错与讨论。

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

相关文章:

  • PostgreSql 备份恢复
  • 鲲鹏916/920处理器性能比较
  • 《Go 语言第一课》课程学习笔记(八)
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——联选言
  • CAS 一些隐藏的知识,您了解吗
  • ChatGPT逐句逐句地解释代码并分析复杂度的提示词prompt
  • 【Lua语法】算术、条件、逻辑、位、三目运算符
  • Cygwin 配置C/C++编译环境以及如何编译项目
  • 回归预测 | MATLAB实现FA-BP萤火虫算法优化BP神经网络多输入单输出回归预测(多指标,多图)
  • 【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互
  • Java课题笔记~ Ajax
  • 调整mysql 最大传输数据 max_allowed_packet=500M
  • 【工具】 删除Chrome安装的“创建快捷方式”
  • windows上的docker自动化部署到服务器脚本
  • VoxWeekly|The Sandbox 生态周报|20230814
  • Aurora 8B/10B
  • 如何关闭“若要接收后续google chrome更新,您需使用windows10或更高版本”
  • python中使用xml快速创建Caption和URL书签管理器应用程序
  • 分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测
  • Vue中使用v-bind:class动态绑定多个类名
  • 深入了解Maven(一)
  • PostgreSQL中的密码验证方法
  • 【微信小程序】小程序之间的跳转方式总结
  • 基于Mysqlrouter+MHA+keepalived实现高可用半同步 MySQL Cluster项目
  • Android12.0 系统限制上网系列之iptables用IOemNetd实现清除所有规则的实现
  • vue2和vue3响应式原理
  • 【面试八股文】每日一题:谈谈你对线程的理解
  • arm开发板 GDB远程调试方法
  • Linux命令(71)之unxz
  • 广告牌安全传感器,实时监测事故隐患尽在掌握