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

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

相关推荐
明月_清风15 分钟前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
aramae35 分钟前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路1 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
荆棘鸟智能1 小时前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
淡海水2 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Wang's Blog2 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog2 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Ivanqhz2 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_2518364573 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程