面试经典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;
}

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

相关推荐
乐悠小码几秒前
数据结构------队列(Java语言描述)
java·开发语言·数据结构·链表·队列
史努比.2 分钟前
Pod控制器
java·开发语言
2的n次方_4 分钟前
二维费用背包问题
java·算法·动态规划
皮皮林5515 分钟前
警惕!List.of() vs Arrays.asList():这些隐藏差异可能让你的代码崩溃!
java
莳光.5 分钟前
122、java的LambdaQueryWapper的条件拼接实现数据sql中and (column1 =1 or column1 is null)
java·mybatis
程序猿麦小七10 分钟前
基于springboot的景区网页设计与实现
java·spring boot·后端·旅游·景区
weisian15116 分钟前
认证鉴权框架SpringSecurity-2--重点组件和过滤器链篇
java·安全
蓝田~18 分钟前
SpringBoot-自定义注解,拦截器
java·spring boot·后端
.生产的驴20 分钟前
SpringCloud Gateway网关路由配置 接口统一 登录验证 权限校验 路由属性
java·spring boot·后端·spring·spring cloud·gateway·rabbitmq
simple_ssn33 分钟前
【C语言刷力扣】1502.判断能否形成等差数列
c语言·算法·leetcode