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

题目来源

力扣每日一题;题序:80

我的题解

方法一 双指针

left和right分别指向相同元素的左右边界,count记录重复元素的个数,index记录最终数组的长度。
当元素没有重复时,只需要将nums[index]=nums[left];
当元素重复时,需要两次nums[index++]=nums[left++];

时间复杂度:O(n)
空间复杂度:O(1)

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;
}

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 21:48:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 21:48:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 21:48:03       82 阅读
  4. Python语言-面向对象

    2024-04-13 21:48:03       91 阅读

热门阅读

  1. 【无标题】

    2024-04-13 21:48:03       38 阅读
  2. Beamer使用

    2024-04-13 21:48:03       33 阅读
  3. Chapter 1-11. Introduction to Congestion in Storage Networks

    2024-04-13 21:48:03       35 阅读
  4. 蓝桥杯单片机示例

    2024-04-13 21:48:03       37 阅读
  5. Python学习笔记之--matplotlib.pyplot绘图技巧总结

    2024-04-13 21:48:03       34 阅读
  6. 【3】c++多线程技术之线程同步与互斥

    2024-04-13 21:48:03       32 阅读
  7. File类及常用方法

    2024-04-13 21:48:03       37 阅读
  8. 在命名实体识别之后理论上不需要进行分类

    2024-04-13 21:48:03       37 阅读
  9. 场景:如何设计一个秒杀系统

    2024-04-13 21:48:03       38 阅读
  10. c++ std::vector介绍

    2024-04-13 21:48:03       43 阅读