LeetCode 80. Remove Duplicates from Sorted Array II
jessie_cornfield
2020年12月12日 07:18
收录于文集
共24篇

给定一个有序的整数数组,移除重复的数,使得每个数至多出现两次。要求in-place,结果保存在原数组的开头部分,不用管后面的多余空间,返回值是新数组的长度。不能给额外的数组开辟内存,空间复杂度为O(1)。

难度:medium

算法:two pointers

思路:

本题关键是数组已经sorted,于是可以扫描一遍完成,且不需要额外空间(例如:用于计数的哈希表)。采用双指针的方法,pOld扫描旧数组,pNew指向新数组尾部,对于出现两次以上的duplicates不用删除(删除操作会增加时间复杂度),只需要用后面的数覆盖掉。时间复杂度为O(N)。

代码