错误的集合(力扣刷题)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客

由于作者比较菜,还没学malloc这个函数,因此这个题目只写一些与原题大致的思路。

题目链接:645. 错误的集合 - 力扣(LeetCode) 

题目:

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

示例 1:

输入:nums = [1,2,2,4]
输出:[2,3]

示例 2:

输入:nums = [1,1]
输出:[1,2]

思路:

我们肯定得一个一个的去排查。那怎么排查呢?我们要创建应该数组产生从1~n的数。然后一个一个的比较,最后得出结果。 但是这个题目有一个误导的点,就是这个原来的数组不一定是有序的,需要我们自己将这个数组排成有序,这里我们就想到了冒泡排序。(升序或者降序都可以)

nums//这个是错误的数组
numsSize//这个是错误数组的元素个数

实现:

我们就可以先来把这个数组进行排序。

int i = 0;
for (i = 0; i < numsSize - 1; i++)//趟数:要排的数-1
{int j = 0;for (j = 0; j < numsSize - 1 - i; j++)//每一趟要做的事{if (*(nums + i) > *(nums + i + 1))//如果不满足升序就得交换{int tmp = *(nums + i);*(nums + i) = *(nums + i + 1);*(nums + i + 1) = tmp;}}
}

接下来就开始一个一个的比较 。

 int count1 = 0;//记录重复出现的数int count2 = 0;//记录丢失的数for (i = 0; i < numsSize; i++){if (*(nums + i) != (i + 1)){count1 = *(nums + i);count2 = (i + 1);}}

找到了,就可以打印在屏幕上。

printf("重复出现的数是:%d\n", count1);
printf("丢失的数是:%d\n", count2);
#include <stdio.h>
void findErrorNums(int* nums, int numsSize)
{//冒泡排序int i = 0;for (i = 0; i < numsSize - 1; i++)//趟数:要排的数-1{int j = 0;for (j = 0; j < numsSize - 1 - i; j++)//每一趟要做的事{if (*(nums + i) > *(nums + i + 1))//如果不满足升序就得交换{int tmp = *(nums + i);*(nums + i) = *(nums + i + 1);*(nums + i + 1) = tmp;}}}int count1 = 0;//记录重复出现的数int count2 = 0;//记录丢失的数for (i = 0; i < numsSize; i++){if (*(nums + i) != (i + 1)){count1 = *(nums + i);count2 = (i + 1);}}printf("重复出现的数是:%d\n", count1);printf("丢失的数是:%d\n", count2);
}int main()
{int arr[] = { 1,2,2,4 };//可以自己输入想要排查的数int sz = sizeof(arr) / sizeof(arr[0]);findErrorNums(arr, sz);return 0;
}

 如果我们想要输入排查的数,就可以这样写。

 int n = 0;scanf("%d", &n);int arr[n];for (int i = 0; i < n; i++){scanf("%d", (arr + i));//只能有一个丢失的数和重复的数}

由于VS2022不支持变长数组,所有我就只能输入一个固定的数。 

 

 

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

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

相关文章

基于SpringBoot、Docker和阿里云的稀土掘金社区自动签到与自动抽奖脚本:设计、开发与部署实践

创建一个SpringBoot项目 添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.s…

猫头虎分享已解决Bug || Error: Maximum Update Depth Exceeded in React ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

matlab发送串口数据,并进行串口数据头的添加,我们来看下pwm解析后并通过串口输出的效果

uintt16位的话会在上面前面加上00&#xff0c;16位的话一定是两个字节&#xff0c;一共16位的数据 如果是unint8的话就不会&#xff0c; 注意这里给的是13&#xff0c;但是现实的00 0D&#xff0c;这是大小端的问题&#xff0c;在matlanb里设置&#xff0c;我们就默认用这个模式…

计算机网络——网络安全

计算机网络——网络安全 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.cn/qianqiu) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 网络安全何…

MATLAB知识点:isempty函数(★★★★☆)判断数组是否为空

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第…

LLM大模型常见问题解答(3)

简要描述下列概念在大语言模型中的作用 Transformer 架构Attention 机制预训练与微调过拟合和欠拟合 Transformer 架构 Transformer是一种基于自注意力机制的深度学习模型&#xff0c;它在论文“Attention Is All You Need”中首次提出。与此前流行的循环神经网络&#xff0…

酷开科技荣获“消费者服务之星”称号后的未来展望

恭喜酷开科技荣获2023年第四季度黑猫平台“消费者服务之星”称号&#xff01;这是对酷开科技长期以来坚持用户至上、用心服务的肯定和认可。作为OTT行业的佼佼者&#xff0c;酷开科技一直秉承着“以用户为中心”的服务理念&#xff0c;不断追求卓越品质&#xff0c;为用户提供更…

2024年低代码平台概览:国内主流平台一览

低代码开发是一项革命性的技术&#xff0c;主要目的是尽量避免程序研发的复杂性&#xff0c;让外行开发者也能加入到应用程序的搭建中。低代码平台的核心概念和构成部分通常包括用户界面和拖拽设计、预构件和模块、自动化工作内容与数据库集成和扩展应用&#xff0c;应用低代码…

c++ 内存

c 内存 内存分区 1.代码区&#xff1a;程序的机器指令&#xff0c;可以被机器直接执行。 属性&#xff1a;只读和共享 代码区包含什么&#xff1a; 在程序编译时就已经被分配好了地址&#xff0c;并保存在可执行文件的代码段中。当程序运行时&#xff0c;操作系统会将代码段的…

Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

高级自定义标记功能

高级自定义标记功能 自定义标记时用户定义的标记,它可通过创建可重用的组件来尽量较少JSP中复杂、重复的业务逻辑代码。这些组件可用于其他应用程序。Javax.servlet.jsp.tagtext包定义了开发自定义标记的类和接口。您可以使用此包的类和接口创建标记处理程序,这些程序可实现带…

【机器学习】卷积和反向传播

一、说明 自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来&#xff0c;卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets&#xff0c;CNN 无处不在。 您是否想知道 CNN 的反向传播中会发生什么&#xff0c;特别是反向传播在 CNN 中的工作原理。…