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,是因为要从数组的第一个开始重新进行赋值
相关推荐
那个村的李富贵20 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
power 雀儿20 小时前
Scaled Dot-Product Attention 分数计算 C++
算法
Yvonne爱编码20 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
熬夜有啥好20 小时前
数据结构——哈希表
数据结构·散列表
琹箐21 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
renhongxia121 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了21 小时前
数据结构之树(Java实现)
java·算法
算法备案代理21 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.1 天前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
我能坚持多久1 天前
【初阶数据结构01】——顺序表专题
数据结构