Leetcode删除排序数组中的重复项

#include<stdio.h>

int newlen(int *shuzu,int size)
{
    int count=0;
    for(int i=0;i<size-count;i++)
    {
        //
        printf("i的值:%d\n",i);
        //
        for(int ii=0;ii<size-count;ii++)
        {
            //
            printf("ii的值:%d\n",ii);
            //
            if(i==ii)
            {
                
            }
            else
            {
                if(shuzu[i]==shuzu[ii])
                {
                    if(ii==size-count-1)
                    {
                        count++;
                        //
                        printf("输出数组:\n");
                        for(int i=0;i<size-count;i++)
                        {
                            printf("%d\t",shuzu[i]);
                        }
                        printf("\n");
                        //
                    }
                    else
                    {
                        for(int a=ii;a<size-count-1;a++)
                        {
                            shuzu[a]=shuzu[a+1];
                        }
                        count++;
                        //
                        printf("输出数组:\n");
                        for(int i=0;i<size-count;i++)
                        {
                            printf("%d\t",shuzu[i]);
                        }
                        printf("\n");
                        //
                    }
                }
            }
        }
    }
    return count;
}

int main()
{
    printf("请输入数组大小:");
    int n;
    scanf("%d",&n);
    printf("输入数据:\n");
    int nums[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&nums[i]);
    }
    printf("输出数组:\n");
    for(int i=0;i<n;i++)
    {
        printf("%d\t",nums[i]);
    }
    printf("\n执行函数\n");
    int len=0;
    len=newlen(nums,n);
    printf("输出新数组:\n");
    for(int i=0;i<n-len;i++)
    {
        printf("%d\t",nums[i]);
    }
    return 0;
}

删除数组中重复项的程序
知识点
1.程序原理并非是真正的删除,而是发现一个重复的数的位置,就将后面的值依次往前挪动,最后返回新数组的长度,其实数组大小并没有改变,而是只显示挪动了位置后,新长度的数组。
2.数组是通过指针传递的,所以在函数内的操作,会直接作用到数组,只需要返回新的数组长度即可

思考
有没有什么方法能真的删除掉后面多余的数组数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值