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

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

相关推荐
johnrui1 分钟前
JUC之AQS
java·开发语言·jvm
Full Stack Developme2 分钟前
Spring 模块介绍
java·后端·spring
devilnumber6 分钟前
Netty 核心重点精讲(面试 + 工作 精简背诵版)
面试·netty
沫璃染墨10 分钟前
红黑树完全指南:从核心原理到插入验证全实现
开发语言·c++·算法
Mahir0810 分钟前
Redis 核心机制:数据过期策略与淘汰策略深度解析
数据库·redis·后端·缓存·面试
多敲代码防脱发15 分钟前
Spring进阶(BeanFactory与ApplicationContext)
java·数据库·spring boot·后端·spring
Controller-Inversion21 分钟前
23. 合并 K 个升序链表
数据结构·链表
吴声子夜歌24 分钟前
Java——反射
java·反射
JAVA面经实录91728 分钟前
完整版JVM 深度学习体系(二)
java·jvm
.ZGR.30 分钟前
线程池相关知识及并发统计案例实现
java·开发语言