Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example,
Given input array A = [1,1,2]
,
Your function should return length = 2
, and A is now [1,2]
.
解题思路:这道题是给出一个排序数组,去除重复的元素并且输出长度。这道题思路比较简单,就是从第一个元素和第二个元素开始比较,如果不相同,则将借用一个变量nLength,将第二个元素存入A[++nLength]中,若相同,则不予理睬。记住最后的长度要加1,毕竟我们是从0开始计数的,数组长度为最末元素指引序号加1;
class Solution { public: int removeDuplicates(int A[], int n) { int nLength=0; if(A==NULL||n==0) return 0; for(int i=1;i<n;i++) { if(A[i]!=A[nLength]) { ++nLength; A[nLength]=A[i]; } } return nLength+1; } };