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

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

相关推荐
阿林学习计算机3 分钟前
AVL树的实现
数据结构
whm27779 分钟前
Visual Basic 值传递与地址传递
java·开发语言·数据结构
测试199813 分钟前
Jmeter是如何实现接口关联的?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·接口测试
CoderYanger14 分钟前
前端基础——HTML练习项目:填写简历信息
前端·css·职场和发展·html
没有bug.的程序员16 分钟前
云原生与分布式架构的完美融合:从理论到生产实践
java·分布式·微服务·云原生·架构
村口张大爷26 分钟前
Spring Boot 初始化钩子
java·spring boot·后端
立志成为大牛的小牛26 分钟前
数据结构——二十二、并查集(王道408)
c语言·数据结构·笔记·学习·考研
x_feng_x30 分钟前
Java从入门到精通 - 集合框架(二)
java·开发语言·windows
LB211231 分钟前
苍穹外卖-缓存套餐 Spring Cache day07
java·spring boot·spring
学学学无无止境32 分钟前
力扣-上升的温度
leetcode