输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
5 10 12 93 12 75
10 12 93 75
int main() {
int num = 0;
int nums[100];
int i = 0; int j = 0; int n = 0;
scanf("%d", &num);
int pd = 0;
for (i = 0; i < num; i++)
{
scanf("%d", &nums[i]);
}
for (i = 0; i < num; i++)
{
pd = 0;
for (n = 0; n < i; n++)
{
if (nums[n] == nums[i])
{
pd = 1;
break;
}
}
if (pd == 0)
{
printf("%d ", nums[i]);
}
}
return 0;
} 直接与自身对比,如果有相同标记为1,最后只输出标记为0的数字
#include <stdio.h>
int main() {
int n = 0;
int arr[1000] = { 0 };
scanf("%d", &n);
for (int i = 0;i < n;i++)
{
scanf("%d", &arr[i]);
}
int j = 0;
while(j < n && arr[j] != 0)
{
ret:
for (int k = j+1;k < n;k++)
{
if (arr[j] == arr[k])
{
int l = k;
for (l = k;l < n;l++)
{
arr[l] = arr[l + 1];
}
arr[l] = 0;
goto ret;
}
}
j++;
}
int a = 0;
while (arr[a] != 0)
{
printf("%d ", arr[a]);
a++;
}
return 0;
} #include<stdio.h>
void My_scanf(int arr[],int n)
{
int i = 0;
for(i=0;i<=n;i++)
{
scanf("%d ",&arr[i]);
}
}
int remove_same(int arr[],int arr1[],int n)
{
int i = 0;
int j = 0;
int sum = 0;
for(i=0;i<n;i++)
{
int judge = 1;
for(j=0;j<=sum;j++)
{
if(arr[i]==arr1[j])
{
judge =0;
break;
}
}
if(judge == 1)
{
arr1[sum]=arr[i];
sum++;
}
}
return sum;
}
void My_printf(int arr1[],int n)
{
int i = 0;
for(i=0;i<n;i++)
{
printf("%d ",arr1[i]);
}
}
int main()
{
int n = 0;
int k = 0;
scanf("%d\n",&n);
int arr[n];
int arr1[n];
My_scanf(arr,n);
int ret = remove_same(arr,arr1,n);
My_printf(arr1,ret);
return 0;
} #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;
}