输入非递减数组,要求每个元素最多重复两次,求最后剩下的数组和元素个数
这题函数的返回值是元素个数,但是还需要把输入的参数也就是输入的数组也改动成合法的
因为是有序的序列,所以直接遍历一遍,用cur保存元素,cnt保存这个元素出现的次数就好,ON
1 class Solution { 2 public: 3 int removeDuplicates(vector<int>& nums) { 4 int ans=0; 5 if(nums.size()==0) return ans; 6 int cur=nums[0]; 7 int cnt=1; 8 ans=1; 9 for(int i=1;i<nums.size();i++){ 10 if(nums[i]==cur){ 11 cnt++; 12 if(cnt<=2) nums[ans++]=nums[i]; 13 } 14 else{ 15 cur=nums[i]; 16 cnt=1; 17 nums[ans++]=nums[i]; 18 } 19 } 20 return ans; 21 } 22 };
时间: 2024-10-11 21:38:11