学习链接:https://zhuanlan.zhihu.com/p/29544395643
学习思路:
- 使用两个指针:慢指针
slow和快指针fast - 慢指针
slow指向当前可以放置元素的位置 - 快指针
fast用于遍历数组 - 对于每个元素,我们需要判断是否应该保留它:
- 如果当前元素是第一个或第二个出现,则保留
- 如果当前元素是第三个或更多次出现,则跳过
- 判断当前元素是否应该保留的方法:
- 如果
slow < 2或者nums[fast] != nums[slow-2],则保留当前元素 - 否则,跳过当前元素
- 利用数组已排序的特性,相同的元素一定相邻
- 使用双指针技巧,一个指针用于遍历,一个指针用于放置元素
- 判断元素是否应该保留的关键是比较当前元素与
slow-2位置的元素
学习代码: