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

面试经典150题 day4

题目来源

力扣每日一题;题序:80

我的题解

方法一 双指针

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

当元素没有重复时,只需要将nums[index]=nums[left];

当元素重复时,需要两次nums[index++]=nums[left++];
时间复杂度 :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;
}

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

相关推荐
7yewh4 分钟前
【LeetCode】力扣刷题热题100道(26-30题)附源码 轮转数组 乘积 矩阵 螺旋矩阵 旋转图像(C++)
c语言·数据结构·c++·算法·leetcode·哈希算法·散列表
苹果酱056740 分钟前
Golang的文件加密技术研究与应用
java·vue.js·spring boot·mysql·课程设计
xweiran2 小时前
CAS操作的底层原理(总线锁定机制和缓存锁定机制 )
java·cas·处理器·总线锁定·缓存锁定
Miraitowa_cheems2 小时前
[JavaEE] Spring IoC&DI
java·spring·java-ee
V+zmm101342 小时前
基于微信小程序的水果销售系统的设计与实现springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·springboot
酒酿小圆子~3 小时前
NLP中常见的分词算法(BPE、WordPiece、Unigram、SentencePiece)
人工智能·算法·自然语言处理
头发那是一根不剩了3 小时前
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
java
勤劳的进取家3 小时前
数组(Array)和链表(Linked List)
数据结构·链表
小白起 v3 小时前
三天学完微服务其二
java·微服务·架构
huiyunfei3 小时前
MinorGC FullGC
java·jvm·算法