将数组中的元素去重,并保持数组元素原顺序输出 要求时间复杂度尽可能的小

来源:互联网 发布:北京凶宅数据库名单 编辑:程序博客网 时间:2024/04/30 21:23
#include <stdio.h>#include <string.h>#define N 65536void filter(int a[], int n) {memset(store_order, -1, sizeof(store_order));memset(store_data, -1, sizeof(store_data));for(int i = 0; i < n; ++i) {if(-1 == store_order[a[i]]) {store_order[a[i]] = i;}}for(int i = 0; i < n; ++i) {if(store_order[i] != -1) {store_data[store_order[i]] = i;}}for(int i = 0; i < n; ++i) {if(store_data[i] != -1)printf("%5d", store_data[i]);}printf("\n");}int main(void) {int a[] = {7, 2, 1, 1,1,1,1,1,1,3, 3, 4, 5, 3, 6, 7};filter(a, 16);return 0;}

算法时间复杂度:O(n)

空间复杂度:O(N),N为待处理数据的取值上界


0 0