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

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

相关推荐
代码不停28 分钟前
Java单链表和哈希表题目练习
java·开发语言·散列表
Dxxyyyy30 分钟前
零基础学JAVA--Day37(坦克大战1.0)
java·开发语言
Ayanami_Reii31 分钟前
基础数学算法-开关问题
数学·算法·高斯消元
OranTech34 分钟前
第28节课-夕夕超市收银系统(下)-笔记
java
Heo39 分钟前
Webpack高级之常用配置项
前端·javascript·面试
稚辉君.MCA_P8_Java41 分钟前
通义 Go 语言实现的插入排序(Insertion Sort)
数据结构·后端·算法·架构·golang
IDOlaoluo42 分钟前
jakarta-tomcat-connectors-jk2-src.tar.gz 安装教程(详细步骤及附安装包)
java·tomcat
SheepHappy1 小时前
MyBatis-Plus 源码阅读(三)条件构造器原理深度剖析
java·源码阅读
zhaomy20251 小时前
从ThreadLocal到ScopedValue:Java上下文管理的架构演进与实战指南
java·后端
用户84913717547161 小时前
从源码看设计:Java 集合框架的安全性与性能权衡 (基于 JDK 1.8)
java·面试