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

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

相关推荐
Controller-Inversion几秒前
33. 搜索旋转排序数组
数据结构·算法·leetcode
风味蘑菇干3 分钟前
继承 + static + final 综合应用
java·开发语言
天真小巫5 分钟前
2026.5.10总结
职场和发展
IT策士5 分钟前
Python 面试系列:常见 100 个经典面试问题,从入门到进阶
开发语言·python·面试
Rkgua8 分钟前
路径传参和查询传参和请求体传参区以及Vue和React的用法区分
前端·面试
陆水A9 分钟前
运输时效预测模型:静态路由时效的计算与验证
大数据·人工智能·算法·spark·数据库开发·etl工程师
电科一班林耿超11 分钟前
机器学习大师课 第 6 课:随机森林 —— 工业界最能打的 “万能算法“
算法·随机森林·机器学习
驼同学.14 分钟前
【求职季】LeetCode Hot 100 渐进式扫盲手册(Python版)
python·算法·leetcode
li星野14 分钟前
二分查找六题通关:从标准模板到旋转数组(Python + C++)
java·c++·python
无所事事O_o25 分钟前
IntelliJ IDEA 无法识别 Maven SNAPSHOT 依赖,但 Maven 编译正常
java