算法笔记12:数组去重
2021/11/4 22:39:53
本文主要是介绍算法笔记12:数组去重,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream> using namespace std; int main() { int n; cin>>n; int a[n+1];//放置索引越界,数组大一些 int tmp[n+1];// 定义一个和a相同大小的数组,存放去重后的数 for(int i=0;i<n;++i) cin>>a[i];//依次输入数组a int m = 0; // 记录当前tmp到底存了多少个元素 for (int k = 0; k < n; ++k) { int j = 0;//放外面的作用是下面if要用 for (; j < m; j++)//可以省略j=0 { if (a[k] == tmp[j])//拿a[i]依次与tmp里的元素对比 break; // 找到相同的了就break } if (j == m)//这个意思是数组b内的数据与当前位置的a数组里面的数据不一样 { // 没有找到一个相同的,把a中此元素放入tmp里 tmp[m] = a[k]; m++; } } for (int ii = 0; ii < m; ii++) { cout << tmp[ii] << " ";//输出 } return 0; }
数组去重,temp数组负责保存去重后的数据,外循环k用来移动未去重前的a[]数组下标,内循环j用来遍历temp数组,与a数组进行对比。j的限制就是temp当前有的元素。break是跳过当前的j循环,如果没有相同的就把a元素放入temp中
还有一种
#include<iostream> #include <algorithm>//算法头文件,sort包含在内 using namespace std; int main() { int n; cin>>n; int a[n+1]; for(int i=0;i<n;++i) cin>>a[i]; sort( a, a + n); // 排序 int m=unique(a, a +n) - a;//去重复 for (int i = 0; i < m; i++) cout << a[i] << " ";//输出 return 0; }
利用C++自带的排序和取重函数sort和unique,#include <algorithm>//算法头文件
unique是STL中的函数,需要#include<algorithm>
unique的作用是“去掉”容器中相邻元素的重复元素,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址
int num[10]={1,1,2,2,2,3,4,5,5,5}; int ans=unique(num,num+10)-num;
这时,返回的ans是5,而num中前5项就是1,2,3,4,5,一般使用前需要对容器进行排序。
这篇关于算法笔记12:数组去重的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南