蒟蒻的第一篇题解

· · 题解

前言

本蒟蒻的第一篇题解,跟一位大佬思路一样,一道很水的题

题目大意

题目有点难理解,多读几遍就能通

大概就是找有多少个不同数字,接着输出个数,和最后一次出现的顺序输出

分析

看到这道题就能想到桶排,再看眼范围只有 \displaystyle10^6 所以先记录个数,再遍历一遍,注意最后要倒序输出

接下来直接看代码

#include<bits/stdc++.h>
using namespace std;
int m,n,ans,temp;
int gs[1000001];//用来记录个数 
int a[1000001],sum[1000001];//答案数组 
bool b[1000001];//用来统计 
int main(){
    cin>>m>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        gs[a[i]]++;
    }
    for(int i=1;i<=1000000;i++){//从题中得知最大为1000000 
        if(gs[i]) ans++;
    }
    for(int i=n;i>=1;i--){//题目说倒着第一个出现
        if(b[a[i]]!=true){
            sum[++temp]=a[i];
            b[a[i]]=true;//标记已访问 
        }else continue; 
    }
    cout<<ans<<endl;//输出个数
    for(int i=ans;i>=1;i--) cout<<sum[i]<<" "; 
    return 0;//好习惯 
}

完结散花!!!

希望管理员能过