输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
5 10 12 93 12 75
10 12 93 75
#include <stdio.h> int main() { int n; scanf("%d", &n); int arr[n]; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } int arr2[n]; int k = 0; for (int i = 0; i < n; i++) { int flag=1; for (int j = 0; j < k; j++) { if (arr[i] == arr2[j]){ flag = 0; break; } } if (flag) { arr2[k++]=arr[i]; } } for(int i=0;i<k;i++){ printf("%d ", arr2[i]); } return 0; }
#include <stdio.h> int main() { int n = 0, i = 0, j = 0, k = 0, p = 0; scanf("%d", &n); int arr[90] = { 0 }; for(i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (j = 0; j < n; j++) { int m = 0; for (k = 0; k < n; k++) { if (arr[j] == arr[k] && j <= k) { printf("%d ", arr[j]); m++; break; } if (arr[j] == arr[k] && j > k) { m++; break; } } if(m == 0) { printf("%d ", arr[j]); } } return 0; }
#include <stdio.h> #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; }
#include <stdio.h> int main() { //输入 int n; scanf("%d", &n); int arr[1000] = { 0 }; for(int i = 0; i < n; i++){ scanf("%d", &arr[i]); } //判断 //从第一个数开始,每次判断一个数 for(int i = 0; i < n ; i++){ //判断arr[i]后面是否有重复整数 for(int j = i+1; j < n; j++){ //如果有,将后面的重复数变为-1 if(arr[i] == arr[j]){ arr[j] = -1; } } } //此时,数组中只有不重复数和-1 //打印 for(int i = 0; i < n; i++){ //打印不是-1的数 if(arr[i] != -1) printf("%d ", arr[i]); } return 0; }
#include <stdio.h> int main() { int n, val, count = 0; int arr[5001]; // 可以包含1-5000所有数的数组,用来记录 出现过的数字 int arrx1[1000]; // 按输入顺序,记录 不重复的数字 scanf("%d", &n); for (int i = 0; i < n; i++){ scanf("%d", &val); if (arr[val] != val){ arr[val] = val; arrx1[count] = val; count += 1; } } for (int j = 0; j < count ; j++){ printf("%d ", arrx1[j]); } return 0; }
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int arr[1000] = {0}; int i = 0; for ( i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (i = 0; i < n; i++) { int j = 0; for (j = i + 1; j < n; j++) { //先找出相同的元素 //如果相等,要把后续元素往前移动 if (arr[i] == arr[j]) { int k = 0; for (k = j; k < n - 1; k++) { arr[k] = arr[k + 1]; } n--;//去重一个,个数少1 j--; //如果去重了arr[j] //把下一个位置的数字arr[j+1],放在新的arr[j]上 //恰好又和arr[i]相同,所以也要再判断 //3 2 3 3 3 4 5 // } } } for (i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }
#include <stdio.h> void solve() { int n = 0,length = 0; int arr1[1010] = { 0 }, arr2[5050] = { 0 }; scanf("%d", &n); for (int i = 0; i < n; i++) { int x = 0; scanf("%d", &x); if (arr1[x] == 0) { arr1[x]++; arr2[length++] = x; } } for (int j = 0; j < length; j++) printf("%d ", arr2[j]); printf("\n"); } int main() { solve(); return 0; }
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int arr1[1000]; int arr2[1000]; int i = 0; for (i = 0; i < n; i++) { scanf("%d ", &arr1[i]); } for (i = 0; i < n; i++) { if(i==n-1) { arr2[i]=arr1[i]; } int flag = 0; int j = 0; for (j = i + 1; j < n; j++) { if (arr1[i] != arr1[j]) { flag = 1; } else { arr1[j]=0; } } if (flag == 1) { arr2[i] = arr1[i]; } } for (i = 0; i < n; i++) { if(arr2[i]!=0) { printf("%d ", arr2[i]); } } return 0; }
#include <stdio.h> int main() { int n=0; scanf("%d",&n); int arr[n]; for(int i=0;i<n;i++) { scanf("%d",&arr[i]); for(int j=0;j<i;j++) { if(arr[j]==arr[i]) { i--; n--; break; } } } for(int i=0;i<n;i++) { printf("%d ",arr[i]); } return 0; }
#include <stdio.h> int main() { int n = 0; int arr[100]; while(scanf("%d",&n)!=EOF) { for(int i = 0;i<n;i++) { scanf("%d",&arr[i]); } //找到重复的数赋值为0 for(int i = 0;i<n;i++) { for(int j = n-1;j>i;j--) { if(arr[i]==arr[j]) { arr[j]=0; } } } //排除为0的数 for(int i = 0;i<n;i++) { if(arr[i]!=0) { printf("%d ",arr[i]); } } } return 0; }
#include <stdio.h> int main() { int n; scanf("%d",&n); int arr[n]; int i; for(i=0;i<n;i++) { scanf("%d ",arr+i); } int flag = 1; for(i=0;i<n;i++) { int j; for(j=0;j<i;j++) { if(arr[i]==arr[j]) { flag = 0; break; } } if(flag == 1) { printf("%d ",arr[i]); } flag = 1; } return 0; }