题解 | #KiKi去重整数并排序#

KiKi去重整数并排序

http://www.nowcoder.com/practice/f59b914172b94c69a2b29ad0a1d9b1a7

#include<stdio.h>
#include<stdlib.h>
int compare(const void* a, const void* b)
{
    return (*(int*)a)-(*(int*)b);
}
int main()
{
    int n = 0;
    int arr[1000] = { 0 };
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    qsort(arr, n, 4, compare);//先升序排序,排序后有重复的数字
    for (int i = 0; i < n; i++)//开始遍历数组
    {
        if (arr[i] == arr[i + 1])//如果前后两数相等
        {
            for (int j = i; j < n; j++)
            {
                arr[j] = arr[j + 1];//删掉第一个相同数,然后其余数向前补齐空缺
            }
            n--;//数组总元素减一
            i--;//这时第i个数是原来第i+1的数,i--后重新检查新的第i个数
        }
    }
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务