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

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

相关推荐
alexwang21116 小时前
B2007 A + B 问题 题解
c++·算法·题解·洛谷
重生之后端学习16 小时前
46. 全排列
数据结构·算法·职场和发展·深度优先·图论
wostcdk16 小时前
数论学习1
数据结构·学习·算法
javaIsGood_16 小时前
Java基础面试题
java·开发语言
indexsunny16 小时前
互联网大厂Java求职面试实战:基于电商场景的技术问答及解析
java·spring boot·redis·kafka·security·microservices·面试指导
我是中国人哦(⊙o⊙)16 小时前
我的寒假作业
人工智能·算法·机器学习
Zik----17 小时前
Leetcode2 —— 链表两数相加
数据结构·c++·leetcode·链表·蓝桥杯
.格子衫.17 小时前
030动态规划之树形DP——算法备赛
算法·动态规划
Forget_855017 小时前
RHEL——LVS模式
java·开发语言·lvs
渣瓦攻城狮17 小时前
互联网大厂Java面试:从数据库连接池到分布式缓存及微服务
java·redis·spring cloud·微服务·hikaricp·数据库连接池·分布式缓存