​题目链接https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/视频讲解https://www.bilibili.com/video/BV18G5UzzE8c/解题思路如下因为数组是有序的重复元素一定是连续出现的。我们可以用快慢双指针的思路慢指针指向已处理好的、满足条件的数组的最后一个位置快指针遍历整个数组寻找满足条件的元素即出现次数不超过两次的元素核心逻辑当快指针指向的元素与慢指针前两个位置的元素相等时说明该元素已经出现了两次不需要再保留否则将快指针元素复制到慢指针位置并移动慢指针。步骤1.边界处理如果数组长度小于等于 2直接返回数组长度因为最多 2 个元素天然满足条件2.初始化双指针慢指针slow 2因为前两个元素无论是否重复都可以直接保留快指针fast 2从第 3 个元素开始遍历。3.遍历数组当fast nums.Length时循环如果nums[fast] ! nums[slow - 2]说明当前元素可以保留还没出现两次执行nums[slow] nums[fast]然后slow;fast继续下一个元素。4.返回结果slow就是修改后数组的新长度。测试案例代码测试结果总结时间复杂度O (n)快指针遍历数组一次每个元素只处理一次。空间复杂度O (1)只使用了两个指针变量原地修改数组。利用数组有序的特性通过双指针控制每个元素最多保留两次无需额外空间。​