#include <stdio.h>//用一个数组,重复的数变为-1,打印时不为-1的数就打印 #include <stdlib.h> void Distincy(int n) { int* a = malloc(sizeof(int) * n); int sum = 0; for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } //时间复杂度为O(N^2),我感觉不是很好,应该有其他方式优化 for(int i = 0; i < n; i++) { //不能本身比,不然就会变-1, //前面比完,后面一定和前面不同 for(int j = i + 1; j < n; j++) { if(a[i] == a[j]) a[j] = -1; } } for(int i = 0; i < n; i++) { if(a[i] != -1) printf("%d ", a[i]); } free(a); a = NULL; } int main() { //原理a^a = 0,a^0 = a int n; scanf("%d", &n); Distincy(n); return 0; }