Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
小明与序列排序与去重【***】 - NOTEBOOK
小明与序列排序与去重【***】
C++
Posted on 2023-08-07
摘要 : OI第一次考试第六题。数组的去重复和排序
描述:
给定一个长度为 n 的正整数序列,请对序列进行去重(即删除重复的数),并将剩余的元素从小到大输出

输入描述:
第一行一个整数 n,表示序列的长度
第二行 n 个正整数 a1 ,a2 ,…,a n,表示序列中的数


输出描述
:从小到大输出去重后的数,相邻两个数之间用一个空格隔开


#include <iostream>
#include <climits>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+2] = {0};

int temp[n+2] = {0};
int newarray[n+2] = {0};

for(int i=1;i<=n;i++){
cin >> a[i];
}

// 找出最大值 max ,最小值min
int min = INT_MAX;
int max = INT_MIN;
for(int i=1;i<=n;i++){
if(min>a[i])
min = a[i];
if(max<a[i])
max = a[i];
}
// cout<<max<<" "<<min<<endl;

// 将 数组a的值,写入到 temp中[值]=值;目的是去重复。
for(int i=1;i<=n;i++){
temp[a[i]] = a[i];
}

// 将 temp的值写入到 newarry中,对应key为 [1][2][3][4]
// 其实这里就可以直接打印了
int newi = 0;
for( int i=min;i<=max;i++){
if(temp[i]>0){
newi++;
newarray[newi] = temp[i];
}
}

// 打印
for(int i=1;i<=newi;i++){
cout <<newarray[i]<<" ";
}

return 0;
}