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


我想了两个方法。

第一个

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

大致的步骤如下

第二个

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

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

大致步骤如下

 

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

具体代码请查看我的GitHub


免责声明!

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



猜您在找 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 给定一个排序数组,你需要在原地删除重复出现的元素 删除排序数组中的重复项和移除元素以及只出现一次的数字(java实现) 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 位运算-异或运算-只出现一次的数字-给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 Leetcode练习(Python):哈希表类:第136题:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。 Leetcode练习(Python):第448题:找到所有数组中消失的数字:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM