leecode第二十六题(删除排序数组中的重复项)

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int len=nums.size();
        if(len<=1)
            return len;
        
        int start=0,end=1; 
        
        while(end<=len-1)
        {
            while(nums[start]==nums[end] && nums[end]!=nums[len-1])
            {
                for(int i=start;i<len-1;i++)
                    nums[i]=nums[i+1];
            }
            start++;
            end++;
        }
        
        int new_len=0;
        while(new_len<len-1 && nums[new_len]!=nums[new_len+1])
            new_len++;
        
        return new_len+1;
    }
};

分析:

这个题,我写了一万年,丢人的事简直数不胜数,被自己智商深深打败。

思路根本就不清晰!一点都不清晰!啥啊想的那乱七八糟的!

我一开始想着跳跃式把后面重复的一次复制过来,写到一半想到如果过程中有特多重复的数字,那个数字后续可能会被再次检测出来,后来开始一步一步移,但是就在检测步骤的时候我炸了,我一开始非要用start表示,或者end,发现在有重复和没重复情况不一样,然后写条件,发现重复的情况不一样也会得到不同情况的长度,然后我就在牛角尖里死钻。。。

然后我正常起来,算了,重新检测一遍不就完了,反正前面循环实现除最后一个数字外无重复的情况。

唉,早该想到的啊。

不太正常。

猜你喜欢

转载自www.cnblogs.com/CJT-blog/p/10587243.html
今日推荐