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

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

相关推荐
TracyCoder12314 小时前
LeetCode Hot100(51/100)——155. 最小栈
数据结构·算法·leetcode
爱上妖精的尾巴14 小时前
8-8 WPS JS宏 正则表达式 字符组与任选
java·服务器·前端
wu_asia14 小时前
每日一练叁
算法
dalong1014 小时前
A24:圈住小猫游戏
笔记·算法·游戏·aardio
Y.O.U..14 小时前
力扣刷题-86.分隔链表
算法·leetcode·链表
一嘴一个橘子15 小时前
mybatis-plus 基于 service 接口的 crud
java
智算菩萨15 小时前
上下文学习的贝叶斯推断视角:隐式梯度下降还是隐式贝叶斯?
人工智能·算法
项管芝士15 小时前
PMP项目管理:掌握减法与乘法艺术 提升项目效率
职场和发展
TracyCoder12315 小时前
LeetCode Hot100(52/100)——394. 字符串解码
算法·leetcode·职场和发展
thginWalker15 小时前
leetcode有空可以挑战的题目
leetcode