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


我想了两个方法。

第一个

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

大致的步骤如下

第二个

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

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

大致步骤如下

 

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

具体代码请查看我的GitHub


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM