数组去重排序

NVIDIA笔试2018-09-04思路

题目:数组去重排序

Example:

输入:
第一行:一个整数N
第二行:N个整数Ai
输出:
第一行:整数M,去重后的数量
第二行:M个整数按顺序排列

样例输入

5
2 1 2 3 4

样例输出

4
1 2 3 4

解析

输入
输入数据共2行,第一行输入测试数据个数n,第二行输入这n个整数,整数之间可能有重复,整数之间可能有若干个空格。
n <= 105,所有的整数不超过104。
输出
去重后的数量
输出为1行,是这n个数去重后从小到大的排序。

代码(C++)

#include<iostream>
using namespace std;
void Qsort(int a[], int low, int high)
{
    if(low >= high)
    {
        return;
    }
    int first = low;
    int last = high;
    int key = a[first];
    
    while(first < last)
    {
        while(first < last && a[last] >= key)
        {
            --last;
        }
        
        a[first] = a[last];
        
        while(first < last && a[first] <= key)
        {
            ++first;
        }
        
        a[last] = a[first];
    }
    a[first] = key;
    Qsort(a, low, first-1);
    Qsort(a, first+1, high);
}

int main()
{
    int n;
    cin>>n;
    int m=1;
    int a[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    Qsort(a,0,n-1);
    

    for(int i=1;i<n;i++)
    {
        if(a[i]!=a[i-1])
        {
            m++;
        }
    }
    cout<<m<<endl;
    cout<<a[0]<<" ";
    for(int i=1;i<n;i++)
    {
        if(a[i]!=a[i-1])
        {
            cout<<a[i]<<" ";
        }
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务