面试经典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 小时前
线性回归算法
算法·机器学习·线性回归
Coder-magician7 小时前
《代码随想录》刷题打卡day51:图论-part09(dijistra堆优化,Bellman_ford算法)
算法·图论
Nil2087 小时前
leetcode 763划分字母区间
算法·leetcode·职场和发展
不会就选b8 小时前
算法日常・每日刷题--<动态规划>20
算法·leetcode·动态规划
别动我齐刘海8 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
青少儿编程课堂9 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
不会就选b9 小时前
算法日常・每日刷题--<动态规划>19
算法·leetcode·职场和发展
code2cat9 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe9 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码9 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口