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,是因为要从数组的第一个开始重新进行赋值
相关推荐
优宁维生物11 分钟前
DNA 提取的基础方法
人工智能·算法
@Aurora.22 分钟前
优选算法【专题二:滑动窗口】
算法
小石头 1008628 分钟前
【Java】String类(超级详细!!!)
java·开发语言·算法
.柒宇.33 分钟前
力扣hot100---42.接雨水(java版)
java·算法·leetcode
youngee1138 分钟前
hot100-41验证二叉搜索树
算法
迈巴赫车主40 分钟前
蓝桥杯20534爆破 java
java·数据结构·算法·职场和发展·蓝桥杯
坚持就完事了1 小时前
数据结构之链表
数据结构·python·算法·链表
c#上位机1 小时前
halcon图像去噪—均值滤波
图像处理·算法·均值算法·halcon
曾几何时`1 小时前
347. 前 K 个高频元素 分别使用sort和priority_queue 对哈希结构自定义排序
算法
小李小李快乐不已1 小时前
图论理论基础(3)
数据结构·c++·算法·图论