面试经典150题——删除有序数组中的重复项

题目来源

力扣每日一题;题序:26

我的题解

方法一 双指针

使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。

时间复杂度:O(n)
空间复杂度:O(1)

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;
}

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 10:20:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 10:20:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 10:20:03       87 阅读
  4. Python语言-面向对象

    2024-04-12 10:20:03       96 阅读

热门阅读

  1. HistoricActivityInstance和HistoricProcessInstance区别

    2024-04-12 10:20:03       34 阅读
  2. Zookeeper

    Zookeeper

    2024-04-12 10:20:03      40 阅读
  3. 带资源实战一篇:某音日常养号脚本实现教程

    2024-04-12 10:20:03       43 阅读
  4. springboot + neo4j 问题总结

    2024-04-12 10:20:03       39 阅读
  5. 闭包用运。

    2024-04-12 10:20:03       44 阅读
  6. node.js 常用命令大全

    2024-04-12 10:20:03       45 阅读