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

面试经典150题 day3

题目来源

力扣每日一题;题序:26

我的题解

方法一 双指针

使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。
时间复杂度 :O(n)
空间复杂度:O(1)

java 复制代码
public int removeDuplicates(int[] nums) {
    int left=0,right=1;
    int n=nums.length;
    if(n==1)
        return n;
    int count=0;
    while(right<n){
    	//找到相同元素的左右边界
        while(right<n&&nums[left]==nums[right])
            right++;
        //当前相同元素记录如最终的数组
        count++;
        left=right;
        right++;
        //只有left小于n时才会更新结果数组
        if(left<n)
            nums[count]=nums[left];
    }
    if(left<n)
        count++;
    return count;
}

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

相关推荐
lovebugs4 分钟前
K8s面试第一篇:初识Kubernetes——核心概念与组件详解
后端·算法·面试
用户3315489111076 分钟前
【零停机】一次400万用户数据的双写迁移技术详解
java·面试
逆袭的小黄鸭9 分钟前
深入剖析 JavaScript 执行上下文:代码运行的幕后机制
前端·javascript·面试
AronTing15 分钟前
05-Spring Security 认证与授权机制源码解析
后端·面试
waylon1111316 分钟前
【HOC】高阶组件在Vue老项目中的实战应用 - 模块任意排序
前端·vue.js·面试
柚几哥哥16 分钟前
IntelliJ IDEA全栈Git指南:从零构建到高效协作开发
java·git·intellij-idea
技术liul21 分钟前
解决Spring Boot Configuration Annotation Processor not configured
java·spring boot·后端
HelloDam28 分钟前
基于元素小组的归并排序算法
后端·算法·排序算法
HelloDam28 分钟前
基于连贯性算法的多边形扫描线生成(适用于凸多边形和凹多边形)【原理+java实现】
算法
chushiyunen32 分钟前
dom操作笔记、xml和document等
xml·java·笔记