标签:style class blog code ext color
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]
.
最笨的方法,从前往后,发现一个重复的数字,长度减1,把数组中重复数字后面的数依次前移覆盖重复的数字。
LeetCode结果:Time Limit Exceeded,编码如下:
int removeDuplicates(int A[], int n) { if(n<=1) return n; int len = n; for(int i=1;i<len;){ if(A[i]==A[i-1]){ if(i!=len-1) for(int j = i;j<len-1;j++) A[j]=A[j+1]; len--; }else{ i++;} }//end for return len; }
用时间复杂度是O(n)的方法做,即:在原来的数组中,遍历一次,逐渐将之前重复的取掉,不重复的挪到前面本该存放的地方。
Accept编码如下:
class Solution { public: int removeDuplicates(int A[], int n) { int len = n; int newIndex = 0,oldIndex; for(oldIndex = 1;oldIndex<n;oldIndex++){ if(A[oldIndex]==A[newIndex]) len--; else{ newIndex++; if(newIndex != oldIndex) A[newIndex]=A[oldIndex]; }//end if }//end for return len; } };
[LeetCode] Remove Duplicates from Sorted Array,布布扣,bubuko.com
[LeetCode] Remove Duplicates from Sorted Array
标签:style class blog code ext color
原文地址:http://www.cnblogs.com/Xylophone/p/3795617.html