LeetCode 面试经典150题 80.删除有序数组中的重复项II

题目

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

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

思路

代码

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int k = 2; // 保留位数
        int j = k - 1;  // 始终指向结果数组的最后一个位置
        for (int i = k; i < nums.length; i++) {
            // 注意和谁比较   j-k+1
            if (nums[j - k + 1] != nums[i]) {
                nums[++j] = nums[i];
            }
        }
        return j + 1;
    }
}

性能:时间复杂度 O(n) 空间复杂度O(1)

相关推荐
MicroTech20259 分钟前
自适生长的点云智能:MLGO微算法科技基于双阈值与DDM的仿生式配准算法
科技·算法
yunsr18 分钟前
python作业1
开发语言·python·算法
清铎26 分钟前
项目_华为杯’数模研赛复盘_第二问
深度学习·算法·机器学习
100分简历28 分钟前
无图标简洁大方的简历模板下载
人工智能·面试·职场和发展·pdf·编辑器
v_for_van31 分钟前
力扣刷题记录1(无算法背景,纯C语言)
算法·leetcode·职场和发展
sjjhd65236 分钟前
C++模拟器开发实践
开发语言·c++·算法
踩坑记录36 分钟前
leetcode hot100 25. K 个一组翻转链表 hard
leetcode·链表
七夜zippoe37 分钟前
大模型低成本高性能演进 从GPT到DeepSeek的技术实战手记
人工智能·gpt·算法·架构·deepseek
二年级程序员37 分钟前
qsort函数的使用与模拟实现
c语言·数据结构·算法·排序算法
ajole1 小时前
C++学习笔记——C++11
数据结构·c++·笔记·学习·算法·stl