每日一题:数组去重
一、小乐乐与序列
#include <stdio.h>
int main()
{
int n = 0;
int arr[100001] = {0};
scanf("%d", &n);
int i = 0;
int tmp = 0;
for(i=0; i<n; i++)
{
//1 ≤ k ≤ n
//把每个数字放到对应数字的下标
scanf("%d", &tmp);
arr[tmp] = tmp;
}
for(i=0; i<100000; i++)
{
if(arr[i] != 0)
{
printf("%d ", arr[i]);
}
}
return 0;
}
二、 删除有序数组中的重复项
int removeDuplicates(int* nums, int numsSize){
int*p1=nums;
int*p2=nums;
int i;
for(i=0;i<numsSize;i++)
{
if(*p1==*p2)
{
;
}
else
{
*++p2=*p1;
}
p1++;
}
return p2-nums+1;
}
总结:当需要输入降重元素时选择方法一效率最高,当需要构建降重函数(无法自行输入降重函数)时使用方法二更加高效。