1. 程式人生 > >有序int陣列去重 c語言

有序int陣列去重 c語言

    for(int i = 1;i<numsSize;++i)
    {
        if(nums[i]==nums[i-1])
        {
            //從i-1~numsSize-1 都是重複的  只保留到i-1就可以了
            if(nums[numsSize - 1]==nums[i-1])
            {
                numsSize = i;
                break;
            }
            else if(nums[numsSize - 1] != last)//當前陣列最後的元素不是重複的
            {
                nums[i-1]= nums[numsSize - 1];
                last = nums[numsSize - 1];
                numsSize --;
            }
            else//當前陣列最後的元素是重複的,且已經替換到前面了or ==當前要替換的
            {
                numsSize --;
                i--;
            }
        }
    }

去重完畢後變成逆序陣列

初步測試沒有問題。