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

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

相关推荐
Swizard13 分钟前
别再只会算直线距离了!用“马氏距离”揪出那个伪装的数据“卧底”
python·算法·ai
cat三三14 分钟前
java之异常
java·开发语言
T___T15 分钟前
一个定时器,理清 JavaScript 里的 this
前端·javascript·面试
浙江第二深情19 分钟前
前端性能优化终极指南
java·maven
flashlight_hi33 分钟前
LeetCode 分类刷题:199. 二叉树的右视图
javascript·算法·leetcode
养乐多072235 分钟前
【Java】IO流
java
俊男无期35 分钟前
超效率工作法
java·前端·数据库
LYFlied36 分钟前
【每日算法】LeetCode 46. 全排列
前端·算法·leetcode·面试·职场和发展
2301_8234380236 分钟前
【无标题】解析《采用非对称自玩实现强健多机器人群集的深度强化学习方法》
数据库·人工智能·算法
oscar99938 分钟前
CSP-J教程——第二阶段第十二、十三课:排序与查找算法
数据结构·算法·排序算法