[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;
}
相关推荐
无心水1 小时前
【分布式利器:腾讯TSF】10、TSF故障排查与架构评审实战:Java架构师从救火到防火的生产哲学
java·人工智能·分布式·架构·限流·分布式利器·腾讯tsf
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
Boilermaker19928 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
沈浩(种子思维作者)8 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
Cherry的跨界思维8 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
njsgcs9 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
alonewolf_999 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
io_T_T9 小时前
迭代器 iteration、iter 与 多线程 concurrent 交叉实践(详细)
python
一嘴一个橘子9 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34169 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java