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

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

相关推荐
yaoxin5211231 分钟前
391. Java 文件操作基础 - 方法链式调用
java·开发语言·python
民乐团扒谱机2 分钟前
【源码剖析】MATLAB混响函数底层逻辑拆解:Dattorro算法从公式到音频帧的完整推导
算法
淡海水2 分钟前
【AI模型】概念-Token
人工智能·算法
一铭111998 分钟前
gpt-claude-gemini 超级大模型安装使用教程
java·python·gpt·ai编程·claude·gemini
凯瑟琳.奥古斯特9 分钟前
数据结构核心知识点精要
数据结构·算法·排序算法
weisian1519 分钟前
Java并发编程--44-分布式限流:令牌桶与漏桶算法在网关层的落地
java·分布式·令牌桶算法·漏桶算法·固定窗口算法·滑动窗口算法
SamDeepThinking9 分钟前
秒杀系统怎么区分真实用户和黄牛脚本?
java·后端·架构
2301_7926748612 分钟前
java学习day31(redis)
java·redis·学习
小碗羊肉13 分钟前
【从零开始学Java | 第四十一篇】深入多线程
java·开发语言