无序表删除重复元素
程序员文章站
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();
}
上一篇: Java实现MD5加密解密类