Given a sorted array, remove the duplicates in place such, all element appear only once and return the new length.
Do the allocate extra space for another array, and you must does this on place with constant memory.
For example,
Given input Array nums = [1,1,2],
Your function should return length = 2, with the first of the elements of Nums being 1 and 2 respectively. It doesn ' t matter what are you leave beyond the new length.
idea : You need to add a new variable pos with an initial value of 0 to record the position of the non-repeating element. Iterates from the second element of the array, if it is equal to the previous element, jumps directly to the next one, or, if unequal, assigns the value of the array to the ++POS bit, then continues the next iteration;
Code (c + +):
classSolution { Public:intRemoveDuplicates ( vector<int>& Nums) {intn = nums.size ();if(n==0)return 0;intpos =0, i =1; while(I < N) {if(Nums[i] = = nums[i-1]) {i++; }Else{Nums[++pos] = nums[i++]; }} n = pos+1; Nums.resize (n);returnN }};
Leetcode[26]-remove Duplicates from Sorted Array