删除有序数组中的重复项
跟上个题很像。同样是双指针解法
设置快慢指针f,s
初始时s=0,f=1。
如果nums[s]不等于nums[f]说明不重复,f++,s++。
如果nums[s]等于nums[f]说明重复,f++。
替换操作nums[++s]=nums[f++],可以合并到第1步。
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Solution { public: int removeDuplicates(vector<int>& nums) { int s=0; int n=nums.size(); for(int f=1;f<n;f++){ if(nums[f]-nums[s]){ nums[++s]=nums[f]; } } return s+1; } };
|
做完下一道题后重新写这道题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public: int removeDuplicates(vector<int>& nums) { int n=nums.size(); if(n<2) return n; int s=1,f=1; while(f<n){ if(nums[f]-nums[s-1]){ nums[s]=nums[f]; s++; } f++; } return s; } };
|