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)

相关推荐
源代码•宸3 小时前
Leetcode—620. 有趣的电影&&Q3. 有趣的电影【简单】
数据库·后端·mysql·算法·leetcode·职场和发展
2301_800256113 小时前
地理空间数据库中的CPU 和 I/O 开销
数据库·算法·oracle
wanghowie4 小时前
01.07 Java基础篇|函数式编程与语言新特性总览
java·开发语言·面试
一个不知名程序员www4 小时前
算法学习入门---结构体和类(C++)
c++·算法
阿亮爱学代码5 小时前
Java 面试 (三)
面试·职场和发展
XFF不秃头6 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
a努力。6 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
王老师青少年编程6 小时前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库
有为少年7 小时前
Welford 算法 | 优雅地计算海量数据的均值与方差
人工智能·深度学习·神经网络·学习·算法·机器学习·均值算法