LeetCode:Remove Duplicates from Sorted Array I&&II

本文介绍了一种从数组中移除重复元素的方法,并强调了避免数据污染的重要性。通过两个示例代码,展示了如何从前向后及从后向前遍历数组来移除重复项,确保数据的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bug处

我在处理时候从数组最后开始处理,则前面数据遭到了污染。

class Solution {
public:
    
int removeDuplicates(int A[], int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
    if(n==0) return 0;
    int length = 1;    
    for(int i = 1;i<n;i++)
        if(A[i]!=A[i-1])
           length++;
    int p=0;
    for(int i = 0;i<length;i++)
    {
        int val = A[p];
        A[i] = val;
        
        while(A[p]==val)
        {
            p++;
            
        }
        
    }
    return length;
    
    }
};



一定得考虑数据污染,如果你从头开始存,则每次比较得与后面比较,切勿再与前面比较

class Solution {
public:
    int removeDuplicates(int A[], int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(n<=2) return n;
        int length = 2;
        for(int i =2;i<n;i++)
        if(A[i]!=A[i-1]||A[i]!=A[i-2])
           length++;
        int p = 0;
        for(int i =0;i<length;i++)
        {
            while(p+2<n&&A[p]==A[p+1]&&A[p]==A[p+2])
            {
                p++;
            }
            A[i]= A[p];
            p++;
        }
        return length;
    }
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值