我的思路:如果一个一个比较的话就是太野蛮的写法了,可以先排序在处理
关于排序函数参看:
(在本题中题目上说了Given a sorted array,人家已经排好序啦``````)
刚开始写的,结果:
1 class Solution { 2 public: 3 int removeDuplicates(int A[], int n) { 4 if(n<=1) 5 { 6 return n; 7 } 8 9 int i,j;10 for(i=0;i
其实这样写也不对,比如
int a[] = {1,1,1};
cout<<removeDuplicates(a,3)<<endl;为什么一定要从前往后比呀,这样如果有相同的话,每次还要移动大量的元素,可以从后向前比呀,其实差不多的。
为什么每一次比较完成后就急于把所有元素都移动呀,也可以先攒着,这样,
比如说 1,1,2,3,发现相同的,那就把第二个后面那个给放到第二个那个地方去,什么时间结束需要判断一下,过程如下:
1,1,2,3——>1,2,2,3——>1,2,3,3
但是,如果是1,1,1,2,3的话就不行了,是个死循环了。
可以这样:
AC,代码如下:
1 class Solution { 2 public: 3 int removeDuplicates(int A[], int n) { 4 if(n<=1) 5 { 6 return n; 7 } 8 int i,j; 9 i=0;10 j=1;11 while(j