美文网首页
【算法】删除数组中的重复元素 - 双指针

【算法】删除数组中的重复元素 - 双指针

作者: 王月亮17 | 来源:发表于2024-04-03 11:47 被阅读0次

题目

给定一个有序数组,要求删除数组中的重复元素,不允许创建新数组,返回删除重复元素后的数组长度。

原理

定义一个快指针 j 和一个慢指针 i,慢指针从下标0开始,快指针从下标1开始,遍历数组。如果两个下标对应的数不相等, 则后移 i,并将j的元素赋值到 i,然后后移 j。如果相等,则只后移 j。
这样等 j 遍历完数组后,不重复的元素正好排到 i 的位置。由于题目要求返回长度,所以返回 i+1 即可。

代码

    public static void main(String[] args) {
        int[] arr = new int[]{0, 1, 2, 2, 3, 3, 4};
        int result = duplicateDrop(arr);
        System.out.println(result);
    }

    private static int duplicateDrop(int[] arr) {
        if (arr.length <= 1) {
            return arr.length;
        }
        int i = 0;
        for (int j = 1; j < arr.length; j++) {
            if (arr[j] != arr[i]) {
                i++;
                arr[i] = arr[j];
            }
        }
        return i + 1;
    }

相关文章

  • 数组

    26 删除排序数组中的重复项 使用双指针的做法,删除排序数组中的重复项其实就是找出排序数组中的非重复项,两个指针,...

  • 26. Remove Duplicates from Sorte

    从数组中删除重复元素,返回无重复长度的数组,要使用in place算法,把返回的元素填入重复的位置即可

  • 移除数组中的元素

    移除数组中的元素,双指针算法,利用元数组元素覆盖的方式,利用指针移动到指定的元素,即可一次便利实现

  • 数组

    1. 去除数组中的重复元素 题目 已知一个已经排序的数组,去除数组中的重复元素,返回数组的长度。 思路 使用双指针...

  • leetcode 初级算法 数组(C++)

    初级算法 数组 1.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一...

  • 算法——数组常见初级题(JS)

    一、解法:双指针——快慢指针 Leetcode 26 删除排序数组中的重复项解题思路:两个指针都指向数组的一个数,...

  • LeetCode-26 删除排序数组中的重复项

    题目:26. 删除排序数组中的重复项 难度:简单 分类:链表 解决方案:双指针 今天我们学习第26题删除排序数组中...

  • leetcode 初级算法 数组

    原题目链接 删除排序数组中的重复项 ====>双指针动画演示 双指针解题代码思路 简化代码 复杂度分析:时间复杂度...

  • 【剑指offer-双指针】

    导读 算法 | 双指针套路总结 常用的双指针技巧 算法与数据结构基础 - 双指针 目录: 面试题04. 二维数组中...

  • leetcode数组,链表相关基础题目整理

    leetcode26.删除排序数组中的重复项 关键字:数组题目链接 解题思路:双指针迭代 使用一前一后两个指针,遍...

网友评论

      本文标题:【算法】删除数组中的重复元素 - 双指针

      本文链接:https://www.haomeiwen.com/subject/gsegtjtx.html