欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

无序表删除重复元素

程序员文章站 2024-03-20 13:47:10
...

问题描述:

无序表删除重复元素,升序或保持原顺序排列,要求:时间复杂度为O(n)

 


代码:

#include<iostream>
#include<string.h>
using namespace std;

int n, elem[30], elem_n[50], hashlist[50];

void ascending() //升序
{
    int k = 0;
    for(int i = 0; i < 50; i++)
    {
        if(elem_n[i])
        {
            elem[k] = i;
            k++;
        }
    }
    for(int i = 0; i < k; i++)
        cout << elem[i] << " ";
}
void disorderly()    //无排序
{
    int value = elem[0];
    memset(hashlist, 127, sizeof(hashlist));
    for(int i = 0; i < n; i++)
    {
        if(elem[i] != value)
        {
            if(hashlist[value] != elem[i])
            {
                hashlist[value] = elem[i];
                value = elem[i];
            }
        }
    }
    int j = elem[0];
    while(j != 2139062143)
    {
        cout << j << " ";
        j = hashlist[j];
    }
}

int main()
{
    cin >> n;
    memset(elem_n, 0, sizeof(elem_n));
    for(int i = 0; i < n; i++)
    {
        cin >> elem[i];
        elem_n[elem[i]]++;
    }
    //ascending();
    disorderly();
}

 

相关标签: 算法练习