侧边栏壁纸
博主头像
小顺

一帆风顺 ⛵️⛵️⛵️

  • 累计撰写 70 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

删除排序数组中的重复项

小顺
2022-12-12 / 0 评论 / 0 点赞 / 38 阅读 / 301 字
package com.apesblog.day_20221212;

/**
 * @author ZhangYuShun
 * @since 2022/12/12
 * 删除排序数组中的重复项
 * <p>
 * 一个有序数组 nums ,原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长
 * 度。
 * 不要使用额外的数组空间,必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
 * 双指针算法:
 * 数组完成排序后,我们可以放置两个指针 i 和 j,其中 i 是慢指针,而 j 是快指针。只要
 * nums[i]=nums[j],我们就增加 j 以跳过重复项。
 * 当遇到 nums[j] != nums[i]时,跳过重复项的运行已经结束,必须把nums[j])的值复制到 nums[i +
 * 1]。然后递增 i,接着将再次重复相同的过程,直到 j 到达数组的末尾为止。
 */
public class RemoveDuplicates {
    public static void main(String[] args) {
        int[] nums = {0, 1, 1, 2, 2, 3, 3, 4, 5, 5};
        int count = removeDuplicates(nums);
        System.out.println(count);
    }

    private static int removeDuplicates(int[] nums) {
        int count = 0;
        for (int i = 0, j = 1; j < nums.length; j++) {
            if (nums[i] != nums[j]) {
                count++;
                i = j;
            }
        }
        return count + 1;
    }
}

image-20221212155136392

0

评论区