BC136 KiKi去重整数并排序

给定一个整数序列,KiKi想把其中的重复的整数去掉,并将去重后的序列从小到大排序输出。

输入描述

第一行,输入一个整数n,表示序列有n个整数。

第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。

输出描述

去重并且从小到大排列的整数序列,整数之间用空格分隔。

对于这道题的,我提供了两种解法,一种容易想到,一种非常巧妙。

暴力求解

思路:对于给定的一个整数序列,我们应该先排序,而后去重,先排序可以把重复的值排在一起,这样重复值会比较容易去除。在本题中,我们采用冒泡排序,冒泡排序在之前的文章中讲过了,这里提供一个链接,如果需要请查看冒泡排序。本文重点讨论如何去重。

当排序完成后,要进行去重,下面这张图解释了去重的原理,也很简单,如果相邻两个数值相等,那么将后n-1个数整体前移,覆盖前n-1个数,最终剩下n-1个数,以此类推。 

 

#include <stdio.h>
void bubble_sort(int* p, int sz)
{int i=0;for(i=0;i<sz-1;i++){int j=0;for(j=0;j<sz-1-i;j++){if(p[j]>p[j+1]){int tmp=0;tmp=p[j];p[j]=p[j+1];p[j+1]=tmp;}}}}int main(){int n=0;int i=0;int arr[1000]={0};scanf("%d",&n);//输入n个元素for(i=0;i<n;i++){scanf("%d",&arr[i]);}//1.排序bubble_sort(arr,n);//2.去重//比较n-1对for(i=0;i<n-1;i++){if(arr[i]==arr[i+1]){int k=i;for(k=i;k<n-1;k++){arr[k]=arr[k+1];}n--;//去重完一对,n少一个i--;}}//3.打印for(i=0;i<n;i++){printf("%d ",arr[i]);}return 0;
}

优雅解法

这里还有一个巧妙的解法,我们创建一个1001大小的数组,这样数组最大下标就是1000了,因为每个整数大于等于1,小于等于1000,所以我们可以把整数n放到数组下标为n的位置,这样重复值会被多次放到同一个下标的位置(比如5重复了三次,那么5会被放到数组下标为5的位置3次,这样就起到去重的作用),同时,数字是按照坐标顺序放置,自然而然已经由小到大排好序了,我们只需按顺序打印值不为0的元素即可。

#include <stdio.h>
int main()
{int n=0;int arr[1001]={0};int i=0;int m=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&m);//值为m的元素放到下标为m的位置arr[m]=m;}for(i=0;i<=1000;i++){if(arr[i] != 0)printf("%d ",arr[i]);}return 0;
}

 

 

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

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

相关文章

拉丁方设计资料的方差分析(SPSS版+SAS版)

拉丁方设计&#xff08;Latin square design&#xff09;&#xff1a;实验研究中涉及一个处理因素和两个控制因素&#xff0c;每个因素的类别数或水平数相等&#xff0c;此时可采用拉丁方设计&#xff0c;将两个控制因素分别安排在拉丁方设计的行和列上。该设计类型仍为单因素方…

中电金信通过KCSP认证 云原生能力获权威认可

中电金信通过KCSP&#xff08;Kubernetes Certified Service Provider&#xff09;认证&#xff0c;正式成为CNCF&#xff08;云原生计算基金会&#xff09;官方认证的 Kubernetes 服务提供商。 Kubernetes是容器管理编排引擎&#xff0c;底层实现为容器技术&#xff0c;是云原…

ABAP 新语法--Data Processing

1. String Template 新语法引入了字符串模板&#xff0c;用于处理字符串连接以及格式转换 字符串模板在 | … | 之间定义&#xff0c;主要分为两部分&#xff0c;固定文本和变量 其中&#xff0c;变量只能在 { … } 内使用&#xff0c;大括号之外的所有字符均作为固定文本使用…

【Swagger】只需要三步,就可以让你的项目实现Swagger在线文档,实时浏览,修改展示

目录 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 项目启动中加入Swagger注解的开关&#xff0c;启动Swagger功能 4. 启动项目&#xff0c;查看效果 Swagger 的功能这里就不多说明了&#xff0c;相信大家都懂的&#xff0c;好奇多问一句&#xff0c;大家有知道其…

zookeeper安装配置采坑流程

安装 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz解压&#xff1a; tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz如下 bin目录下文件是可执行文件 conf目录文件是配置文件 修改zoo.cfg&#xff08;复制zoo_sample&#x…

从0搭建ECG深度学习网络

本篇博客介绍使用Python语言的深度学习网络&#xff0c;从零搭建一个ECG深度学习网络。 任务 本次入门的任务是&#xff0c;筛选出MIT-BIH数据集中注释为[‘N’, ‘A’, ‘V’, ‘L’, ‘R’]的数据作为本次数据集&#xff0c;然后按照8&#xff1a;2的比例划分为训练集&…

什么是DNS服务器的层次化和分布式?

DNS (Domain Name System) 的结构是层次化的&#xff0c;意味着它是由多个级别的服务器组成&#xff0c;每个级别负责不同的部分。以下是 DNS 结构的层次&#xff1a; 根域服务器&#xff08;Root Servers&#xff09;&#xff1a; 这是 DNS 层次结构的最高级别。全球有13组根域…

【云原生】Docker 详解(二):Docker 架构及工作原理

Docker 详解&#xff08;二&#xff09;&#xff1a;Docker 架构及工作原理 Docker 在运行时分为 Docker 引擎&#xff08;服务端守护进程&#xff09; 和 客户端工具&#xff0c;我们日常使用各种 docker 命令&#xff0c;其实就是在使用 客户端工具 与 Docker 引擎 进行交互。…

[oneAPI] 手写数字识别-LSTM

[oneAPI] 手写数字识别-LSTM 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolk…

Curson 编辑器

Curson 汉化与vacode一样 Curson 自带chat功能 1、快捷键ctrlk(代码中编辑) 2、快捷键ctrll 右侧打开窗口

小程序项目组件的基本应用

宿主环境&#xff1a;程序运行必须依赖的环境 小程序的宿主环境 ---->手机微信(定位、扫码、支付等) 小程序的通信模型&#xff1a; 渲染层和逻辑层之间的通信(微信客户端转发)逻辑层和第三方服务器之间的通信(微信客户端转发) 小程序的运行机制&#xff1a; 启动&#xff1…

vue基础知识五:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期&#xff08;Life Cycle&#xff09;的概念应用很广泛&#xff0c;特别是在政治、经济、环境、技术、社会等诸多领域经常出现&#xff0c;其基本涵义可以通俗地理解为“从摇篮到坟墓”&#xff08;Cradle-to-Grave&#xff09;的整个过程在Vue中实…

Python opennsfw/opennsfw2 图片/视频 鉴黄 笔记

nsfw&#xff08; Not Suitable for Work&#xff09;直接翻译就是 工作的时候不适合看&#xff0c;真文雅 nsfw效果&#xff0c;注意底部的分数 大体流程&#xff0c;输入图片/视频&#xff0c;输出0-1之间的数字&#xff0c;一般情况下&#xff0c;Scores < 0.2 认为是非…

7zip分卷压缩

前言 有些项目上传文件大小有限制 压缩包大了之后传输也会比较慢 解决方案 我们可以利用7zip压缩工具对文件进行分卷压缩 利用7zip压缩工具进行分卷压缩 查看待压缩文件大小 压缩完成之后有300多M&#xff0c;我们用100M去进行分卷压缩 选择待压缩的文件夹&#xff0c;右…

网络安全 Day30-运维安全项目-容器架构上

容器架构上 1. 什么是容器2. 容器 vs 虚拟机(化) :star::star:3. Docker极速上手指南1&#xff09;使用rpm包安装docker2) docker下载镜像加速的配置3) 载入镜像大礼包&#xff08;老师资料包中有&#xff09; 4. Docker使用案例1&#xff09; 案例01&#xff1a;:star::star::…

《内网穿透》无需公网IP,公网SSH远程访问家中的树莓派

文章目录 前言 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地…

【JavaEE基础学习打卡02】是时候了解Java EE了!

目录 前言一、为什么要学习Java EE二、Java EE规范介绍1.什么是规范&#xff1f;2.什么是Java EE规范&#xff1f;3.Java EE版本 三、Java EE应用程序模型1.模型前置说明2.模型具体说明 总结 前言 &#x1f4dc; 本系列教程适用于 Java Web 初学者、爱好者&#xff0c;小白白。…

java接口导出csv

1、背景介绍 项目中需要导出数据质检结果&#xff0c;本来使用Excel&#xff0c;但是质检结果数据行数过多&#xff0c;导致用hutool报错&#xff0c;因此转为导出csv格式数据。 2、参考文档 https://blog.csdn.net/ityqing/article/details/127879556 工程环境&#xff1a;…

Redis-分布式锁!

分布式锁&#xff0c;顾名思义&#xff0c;分布式锁就是分布式场景下的锁&#xff0c;比如多台不同机器上的进程&#xff0c;去竞争同一项资源&#xff0c;就是分布式锁。 分布式锁特性 互斥性:锁的目的是获取资源的使用权&#xff0c;所以只让一个竞争者持有锁&#xff0c;这…

【算法】排序+双指针——leetcode三数之和、四数之和

三数之和 &#xff08;1&#xff09;排序双指针 算法思路&#xff1a; 和之前的两数之和类似&#xff0c;我们对暴力枚举进行了一些优化&#xff0c;利用了排序双指针的思路&#xff1a; 我们先排序&#xff0c;然后固定⼀个数 a &#xff0c;接着我们就可以在这个数后面的区间…