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

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

相关推荐
Zxc_12 分钟前
《遗传算法:从自然选择到Rastrigin函数优化,手写一个完整的进化求解器》
算法
阿Y加油吧25 分钟前
两道经典动态规划题:乘积最大子数组 & 分割等和子集 复盘笔记
笔记·算法·动态规划
三品吉他手会点灯34 分钟前
C语言学习笔记 - 33.数据类型 - printf函数的详细用法
c语言·开发语言·笔记·学习·算法
:12143 分钟前
java继承
java·开发语言
それども1 小时前
怎么理解 LEFT JOIN 和 LEFT SEMI JOIN
java·数据库·mysql
日月云棠1 小时前
JAVA数据结构与算法 - 基础:数组深度解析
java·后端
WL_Aurora1 小时前
Java多线程详解(二):线程池、同步机制与并发工具类
java·多线程·并发
Java技术小馆1 小时前
微信本地数据提取/接入AI神器
java
日月云棠1 小时前
JAVA数据结构与算法 - 基础:核心概念与框架总览
java·后端