class Solution { public: int removeDuplicates(vector<int>& nums) { int n=nums.size(); if(n<3) return n; int s=2,f=2; while(f<n){ if(nums[f]-nums[s-2]){ nums[s]=nums[f]; s++; } f++; } return s; } };
元素出现次数等于s,f的初始位置。
重复项-Ⅰ
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; } };
初始化s=f=1.
移除元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
class Solution { public: int removeElement(vector<int>& nums, int val) { int n = nums.size(); int s = 0; int f = 0; while (f < n) { if (nums[f] != val) { //区别在这里 nums[s] = nums[f]; s++; } f++; } return s; } };