[Java][Leetcode middle] 80. 删除有序数组中的重复项 II

删除重复元素,最多只保留两个

1. 计数法

  • 第一个元素直接加入
  • 当与前一个元素相同时,计数器+1,不同时计数器恢复1;
    只有计数器小于2时,记录元素;
java 复制代码
public int removeDuplicates2(int[] nums) {
        int cnt = 1;
        int dup = 1;
        for(int i = 1; i < nums.length; i++) {
            if(nums[i] == nums[i-1]) {
                dup++;
            }else{
                dup = 1;
            }
            if(dup <=2){
                nums[cnt++] = nums[i];
            }
        }
        return cnt;
    }

2. 快慢指针法

java 复制代码
/**
 * 双指针法
 */
public int removeDuplicates3(int[] nums) {
    int cnt = 2;  // first two ele must in the array
    for(int i = 2; i < nums.length; i++) {
        if(nums[i] != nums[cnt-2]) {
            nums[cnt++] = nums[i];
        }
    }
    return cnt;
}
相关推荐
CaracalTiger2 分钟前
网站漏洞早发现:cpolar+Web-Check安全扫描组合解决方案
java·开发语言·前端·python·安全·golang·wpf
弥巷2 分钟前
【设计模式】单例模式
java
是乐谷6 分钟前
Python图片转WebP常用库推荐:Pillow、Wand、cv2
大数据·运维·开发语言·人工智能·python·开源·pillow
钢铁男儿8 分钟前
C# 一个投资跟踪程序的设计与实现:面向对象与设计模式的深度解析
java·设计模式·c#
SimonKing11 分钟前
Chrome插件千万别乱装!手把手教你从官方渠道安全下载
java·后端·程序员
野生技术架构师33 分钟前
白话解析LiteFlow之DSL实现
java·开发语言
一叶飘零_sweeeet1 小时前
深入理解 RabbitMQ:从底层原理到实战落地的全维度指南
java·分布式·rabbitmq
LiuYaoheng1 小时前
【Android】Notification 的基本使用
android·java·笔记·学习
这里有鱼汤1 小时前
A股预测还能更准?开源大模型Kronos带你跑通预测+回测全流程
后端·python
血手人屠喵帕斯1 小时前
Redis核心原理与Java应用实践
java·数据库·redis