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)

相关推荐
大布布将军1 小时前
⚡️ 深入数据之海:SQL 基础与 ORM 的应用
前端·数据库·经验分享·sql·程序人生·面试·改行学it
东东的脑洞2 小时前
【面试突击二】JAVA基础知识-volatile、synchronized与ReentrantLock深度对比
java·面试
LYFlied2 小时前
【每日算法】LeetCode 153. 寻找旋转排序数组中的最小值
数据结构·算法·leetcode·面试·职场和发展
唐装鼠2 小时前
rust自动调用Deref(deepseek)
开发语言·算法·rust
ytttr8733 小时前
MATLAB基于LDA的人脸识别算法实现(ORL数据库)
数据库·算法·matlab
jianfeng_zhu5 小时前
整数数组匹配
数据结构·c++·算法
smj2302_796826525 小时前
解决leetcode第3782题交替删除操作后最后剩下的整数
python·算法·leetcode
踏浪无痕5 小时前
从 Guava ListenableFuture 学习生产级并发调用实践
后端·面试·架构
a努力。5 小时前
国家电网Java面试被问:Spring Boot Starter 制作原理
java·spring boot·面试
LYFlied6 小时前
【每日算法】LeetCode 136. 只出现一次的数字
前端·算法·leetcode·面试·职场和发展