面试经典150题 删除有序数组中的重复项 II

面试经典150题 day4

题目来源

力扣每日一题;题序:80

我的题解

方法一 双指针

left和right分别指向相同元素的左右边界,count记录重复元素的个数,index记录最终数组的长度。

当元素没有重复时,只需要将numsindex=numsleft

当元素重复时,需要两次numsindex++=numsleft++
时间复杂度 :O(n)
空间复杂度:O(1)

java 复制代码
public int removeDuplicates(int[] nums) {
    int left=0,right=1,n=nums.length;
    int count=1;
    int index=0;
    while(right<n){
        while(right<n&&nums[left]==nums[right]){
            count++;
            right++;
        }
        if(count==1){
            nums[index++]=nums[left++];
        }else{
            nums[index++]=nums[left++];
            nums[index++]=nums[left++];
        }
        left=right;
        right++;
        count=1;
    }
    if(left<n)
        nums[index++]=nums[left++];
    return index;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐
黄敬峰7 分钟前
一文搞懂 Agentic RAG:用 LangGraph 打造会思考的智能检索架构
面试
彧azz9 分钟前
DFS与BFS:图遍历的两大核心算法
数据结构·学习·算法·深度优先·广度优先
白远山21 分钟前
智慧场馆解决方案软件开发实战:从架构设计到落地部署指南
java·开发语言·架构·需求分析
SL_staff23 分钟前
面向业务人员的IoT概念翻译实践:JVS-IOT低代码配置原理与开发者视角解析
java·spring boot·物联网
Tisfy26 分钟前
LeetCode 0836.矩形重叠:xy两方向分别看
数学·leetcode·题解·模拟
m0_5873830035 分钟前
折扣卡CPS软件开发实战:从系统架构设计到上线指南
java·小程序·架构·需求分析
晚安日记wanna1 小时前
SSR 为什么不适合登录态从水合冲突到缓存串号
前端·react.js·面试
宣宣猪的小花园.1 小时前
【机器学习】损失函数与梯度下降:机器如何通过“犯错”不断变好
人工智能·算法·机器学习
晚安日记wanna1 小时前
压测 TPS 卡在 800CPU 只跑四成六步定位法
运维·面试·测试
Zane19941 小时前
用了Optional,为什么NPE还是防不住?
java·后端