Given a sorted array nums, remove the duplicates in-place such that each element appear only onceand return the new length.
Example 1:
Input: nums = [1,1,2]
Output: 2, nums = [1,2]
Explanation: Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the returned length.
Example 2:
Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4]
Explanation: Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively. It doesn't matter what values are set beyond the returned length.
Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice and return the new length.
Example 1:
Input: nums = [1,1,1,2,2,3]
Output: 5, nums = [1,1,2,2,3]
Explanation: Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3 respectively. It doesn't matter what you leave beyond the returned length.
Example 2:
Input: nums = [0,0,1,1,1,1,2,3,3]
Output: 7, nums = [0,0,1,1,2,3,3]
Explanation: Your function should return length = 7, with the first seven elements of nums being modified to 0, 0, 1, 1, 2, 3 and 3 respectively. It doesn't matter what values are set beyond the returned length.
classSolution{public:intremoveDuplicates(vector<int> &nums) {if(nums.size()==0){return0;}int size =nums.size();int val =nums[0];int count =1;int pos =1;for (int i =1; i <nums.size(); i++) { //count is less than 2 and equal valuesif (nums[i] == val && count <2) { count++;nums[pos] =nums[i]; pos++; } //count is greater than 2 and equal valueselseif (nums[i] == val && count >=2) { size--; } //different values valueselseif (nums[i] != val) { val =nums[i];nums[pos] =nums[i]; pos++; count =1; } }return size; }};