LeetCode88-删除有序数组中的重复项

题目

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

代码

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n <= 2) {
            return nums.length;
        }
        int slow = 2, fast = 2;
        while (fast < n) {
            if (nums[slow - 2] != nums[fast]) {
                nums[slow] = nums[fast];
                slow++;
            }
            fast++;
        }
        return slow;
    }
}

总结

  • 需要理解题意,数组本身是有序的,也就意味相同值肯定是挨着的
  • 需要理解一下为什么slow=2,是因为要从数组的第一个开始重新进行赋值
相关推荐
cm654320几秒前
基于C++的操作系统开发
开发语言·c++·算法
ArturiaZ3 分钟前
【day57】
开发语言·c++·算法
CoovallyAIHub5 分钟前
Energies | 8版YOLO对8版Transformer实测光伏缺陷检测,RF-DETR-Small综合胜出
深度学习·算法·计算机视觉
Emberone12 分钟前
排序:万物皆有序
算法·排序算法
其实秋天的枫14 分钟前
2025年12月英语六级真题及答案解析完整版(第一、二、三套全PDF)
经验分享·算法
2401_8747325320 分钟前
C++并发编程中的死锁避免
开发语言·c++·算法
2301_7923082522 分钟前
C++编译期数学计算
开发语言·c++·算法
hetao173383722 分钟前
2025-03-13~22 hetao1733837 的刷题记录
c++·算法
sqyno1sky34 分钟前
C++中的契约编程
开发语言·c++·算法
优化控制仿真模型1 小时前
2026年最新驾考科目一考试题库2309道全。电子版pdf
经验分享·算法·pdf