整数去重

题目描述

给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。

输入格式

输入包含两行:

第一行包含一个正整数n(1≤n≤20000),表示第二行序列中数字的个数;

第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于50。

输出格式

输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。

输入样例 

5
10 12 93 12 75

输出样例 

10 12 93 75

【代码示例】

复制代码
#include<iostream>
using namespace std;
int a[100000]={}, b[100000]={};

int main(){
    int n;
    cin>>n;
    // 1. 输入n个数并标记n个数已经输入; 
    for(int i=0; i<n; i++){
        cin>>a[i];
        b[i]=1; 
    }
    // 2. 嵌套循环查找相同数字,找到后将后面的数字去除标记; 
    for(int i=0; i<n; i++){
        for(int j=i+1; j<n; j++){
            if(a[i]==a[j]){
                b[j]=0;
            }
        }
    }
    // 3. 输出标记的数字。 
    for(int i=0; i<n; i++){
        if(b[i]==1){
            cout<<a[i]<<" ";
        }
    }
    return 0;
} 



复制代码
#include<iostream>
using namespace std;
int a[20000]={}, book[20000]={};
int main(){
  // a数组: 10 12 93 12 75
  // b数组: 1 2 1 1
  // b数组下标: 10 12 93 75
  int n, m;
  cin>>n;
  for(int i=0; i<n; i++){
    cin>>m;
    a[i]=m; // 存储n个数字;
    book[m]++;
  }
  for(int i=0; i<n; i++){
    if(book[a[i]]==1) cout<<a[i]<<" "; // 输出出现一次的数字:
    else if(book[a[i]]>1){
      cout<<a[i]<<" ";
      book[a[i]]=0; // 避免a[i]再次输出。
    }
  }
  return 0;
}
复制代码

 

 
复制代码

 

posted @   Hi,小董先生  阅读(139)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示