面试经典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 分钟前
C语言---未定义行为
java·c语言·开发语言
没有bug.的程序员15 分钟前
Java 序列化:Serializable vs. Protobuf 的性能与兼容性深度对比
java·开发语言·后端·反射·序列化·serializable·protobuf
北京地铁1号线17 分钟前
2.3 相似度算法详解:Cosine Similarity 与 Euclidean Distance
算法·余弦相似度
圣保罗的大教堂18 分钟前
leetcode 1895. 最大的幻方 中等
leetcode
愚公移码25 分钟前
蓝凌EKP产品:主文档权限机制浅析
java·前端·数据库·蓝凌
Remember_99329 分钟前
【LeetCode精选算法】滑动窗口专题一
java·数据结构·算法·leetcode·哈希算法
Lueeee.35 分钟前
v4l2驱动开发
数据结构·驱动开发·b树
开开心心就好37 分钟前
音频编辑工具,多端支持基础剪辑易操作
java·网络·windows·java-ee·电脑·maven·excel
凯子坚持 c43 分钟前
Protocol Buffers C++ 进阶数据类型与应用逻辑深度解析
java·服务器·c++
黎雁·泠崖1 小时前
Java面向对象:对象内存图+成员与局部变量
java·开发语言