给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

我想了两个方法。

第一个

是使用一个指针,因为是有序的,只需要从头移动到尾部,如果发现下一个元素与当前元素相等,则移动当前元素之后的元素,把相同的元素覆盖掉。

大致的步骤如下

第二个

是使用两个指针,一个快(j)一个慢(i),如果i j 所指向的元素不相等,则i j 同时加一,如果相等,则将j向后移动直到两者所指向的元素不相等。

上一步就相当于确定了移动的步伐,下一步就是移动了。

大致步骤如下

 

方法二比起方法一来说移动的次数会更加少一点。

具体代码请查看我的GitHub

posted on 2019-01-11 17:06  猫咪大王  阅读(2223)  评论(0)    收藏  举报