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,发现在有重复和没重复情况不一样,然后写条件,发现重复的情况不一样也会得到不同情况的长度,然后我就在牛角尖里死钻。。。
然后我正常起来,算了,重新检测一遍不就完了,反正前面循环实现除最后一个数字外无重复的情况。
唉,早该想到的啊。
不太正常。