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)

相关推荐
码农水水15 小时前
国家电网Java面试被问:二叉树的前序、中序、后序遍历
java·开发语言·面试
股朋公式网15 小时前
斩仙飞刀、 通达信飞刀 源码
python·算法
不吃橘子的橘猫15 小时前
NVIDIA DLI 《Build a Deep Research Agent》学习笔记
开发语言·数据库·笔记·python·学习·算法·ai
Xの哲學16 小时前
Linux CFS 调度器深度解析
linux·服务器·算法·架构·边缘计算
bedynamic16 小时前
蚁群算法原理及实现
算法·智能算法
零雲16 小时前
java面试:@Resource和@Autowired的区别
java·开发语言·面试
阿芯爱编程16 小时前
前端面试题linux操作
前端·面试
007php00716 小时前
Git 操作偏门指南:常用和隐藏命令与问题解决
java·git·面试·职场和发展·golang·jenkins·php
Coovally AI模型快速验证16 小时前
当小龙虾算法遇上YOLO:如何提升太阳能电池缺陷检测精度?
人工智能·深度学习·算法·yolo·目标检测·无人机
用户68026590511916 小时前
2026年企业级网络监控选型指南
javascript·后端·面试