C++数组去重与排序
一、整型数组去重与排序:
【题目描述】
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
【输入】
有2行。第1行为1个正整数N ,表示所生成的随机数的个数。第2行有N个用空格隔开的正整数,为所产生的随机数。
【输出】
共2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
例如:
输入 | 结果 |
---|---|
10 20 40 32 67 40 20 89 300 400 15 |
8 15 20 32 40 67 89 300 400 |
这个题可以采用先去重再排序的思路,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
#include<cmath>
#include<iomanip>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#include<stdio.h>
#include<cstdio>
#include<cstring>
#include<map>
#define M 100
using namespace std;
long long a[M + 5],/*f[M+5]*/b[M+5];
//char a[1000001], b[1000001], c[1000001];
int main()
{int n,i,j,cnt=0;cin >> n;for (i = 1; i <= n; i++){cin>> a[i];}b[++cnt] = a[1];for (i = 2; i <= n; i++){for (j = 1; j <= cnt; j++){if (a[i] == b[j]){break;}}if (j > cnt){b[++cnt] = a[i];}}sort(b + 1, b + cnt + 1);cout << cnt << endl;for (i = 1; i <cnt; i++){cout << b[i] << " ";}cout << b[i] << endl;return 0;
}
或者也可以用集合法:
#include <bits/stdc++.h>
#define M 100
using namespace std;
int a[M+5]={1},b[M+5]={0},c[M+5]={0};
int main()
{int n,i,x;set<int>s;cin>>n;for(i=1;i<=n;i++){cin>>x;s.insert(x);//向集合s中插入x;}cout<<s.size()<<endl;
for(auto e:s)
{cout<<e<<" ";
}
cout<<endl;return 0;
}
二、字符串去重(按原来顺序):
【题目描述】
输入一个长度不超过 100 的字符串,删除串中的重复字符。例如:输入的字符串为abacaeedabcdcd,
删除重复字符串后为abced。
【输入格式】
一个长度不超过100个字符。
【输出格式】
删除重复字符后的字符串,保留原来的顺序。
例如:
输入 | 结果 |
---|---|
abacaeedabcd |
abced |
若去重加排序,则直接集合法:
#include <bitsdc++.h>
#define M 100
using namespace std;
int a[M+5]={1},b[M+5]={0},c[M+5]={0};
int main()
{char s[M+5];cin>>s;int len =strlen(s);int i;set<char>z;for(i=0;i<len;i++){z.insert(s[i]);}for(auto e:z){cout<<e;}return 0;
}
C++数组去重与排序相关推荐
- java随机数去重排序_数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数...
数组去重及排序: var arr = [1,5,1,2,6,8,1,81,9,0]; for(var i=0;i for(var j=i+1;j if(arr[i] == arr[j]){ arr.s ...
- java 数组去重排序_Java实现的数组去重与排序操作详解
本文实例讲述了Java实现的数组去重与排序操作.分享给大家供大家参考,具体如下: 这里演示Java实现数组去重.排序操作 文中的示例源码编写基于Jdk1.6+.junit4.8.2 java.util ...
- 前端面试题-数组去重和排序
首先,不好意思,我昨天偷懒了,没有更新面试题,今日补上昨日的锅. 基于上次的对象转化题目,不少同学指出对象种的数组如果长度不一样,不能满足功能,所以针对这个进行优化,代码如下所示: <scrip ...
- 数组-去重、排序方法、json排序
1.数组去重 /*方法一: 1,'1' 会被认为是相同的; 所有hash对象,如:{x;1},{y:1}会被认为是相同的 //10ms */ Array.prototype.unique=functi ...
- JS篇之数组去重、排序、求最值的几种方法封装
一.数组去重(仅列五种常见) 1. es6的 set function unique(arr){return [...new Set(arr)] } 2. 数组的indexOf function un ...
- 【Python3】数组去重和排序
给定一个乱序的数组,数组大小不超过100.删除所有重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序. 输入: 1,3,3,3,2,4,4 ...
- 计算找到出现最多的数字和次数 ,实现数组去重 ,进行排序。
实现 1.计算找到出现最多的数字和次数 2. 实现数组去重 3. 进行排序 <!DOCTYPE html> <html lang="en"><head ...
- Bailian4085 数组去重排序【桶排序】
4085:数组去重排序 总时间限制: 1000ms 内存限制: 1000kB 描述 小吉是银行的会计师,在处理银行帐目的时候,遇到了一些问题.有一系列整数,其中含有重复的整数,需要去掉重复后,排序输出 ...
- 数组的合并,去重,排序
一,两个数组的合并去重: var arr1 = ['a','b']; var arr2 = ['a','c','d']; var arr3 = [1,'d',undefined,true,null]; ...
最新文章
- JVM自动内存管理:对象判定和回收算法
- Spring5源码 - 12 Spring事件监听机制_异步事件监听应用及源码解析
- 134. 加油站 golang
- 笨方法“学习python笔记之字符串
- IDEA 每次启动javaWEB项目,都会自动打开浏览器标签页,如何关闭这么烦人的操作?
- Spring依赖注入static静态变量相关问题
- java mapxtreme_mapxtreme java 初始化地图
- Excel VBA 设计调查问卷
- win10电脑时间同步设置方法
- 使用树莓派3B+ 制作一个属于自己的无线AP 无线路由器 一个Wi-Fi热点
- 工业镜头倍率及视场范围、焦距的计算方法
- Excel快速核对两张表格
- 手机/微信/浏览器的字体设置太大,rem 计算不准确
- 电子不停车收费系统(ETC)专题(5)——最新动态
- 【kaggle】特征工程 trick
- AD20画PCB的学习之路(一)
- 遥感学报(湖泊遥感专刊)投稿历程
- java中PreparedStatement和Statement详细讲解
- 电气设计参考图纸,有高低压电气设计图纸、自控设计图纸和污水处理工程电气自控图
- [kuangbin带你飞]专题一 做题顺序与题解 【简单搜索】
热门文章
- WEB综合案例 黑马面面 day04 用户与角色绑定功能 登录用户菜单控制和权限效验
- 多线程处理十万百万级List(大list处理)
- iis 设置网站前台后台 http和https分离访问
- 影像组学ibex_影像组学的基本概念与临床应用
- 计算机 医学 sci,医学、计算机与图像处理,免版面费的“研究生之友”SCI论文期刊...
- [博客杂志]2007年中国最红的十大美女明星
- ImageJ工具的使用
- 傅里叶变换及低通滤波再反变换(C++opencv)
- 打不开eclipse 由于它来自身份不明的开发者
- mysql查询发生变化的股价_最近半年股价涨跌统计