LC 26.删除排序数组中的重复项

LC 删除排序数组中的重复项

题目链接:26. 删除排序数组中的重复项

题目描述:

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例 1:

给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。

package com.zhou.removeDuplicates;

/**
 * FileName: RemoveDuplicates
 *
 * @author Mozzie
 * @date 2020/11/25 11:28
 * @Description 删除排序数组中的重复项
 */
public class RemoveDuplicates {
     

    /**
     * 数组如下:int[] nums = [0,0,1,1,1,2,2,3,3,4]
     * 双指针法
     * 设定两个指正 i 与 j , 其中 j = i+1
     * i从0开始,若nums[i] != nums[j] 两数不相等,将nums[i]与nums[j]替换
     * 循环执行最终非重复数组length就为i+1
     * 

* 执行顺序 * round1结束 :j = 2 , i = 1, num[2] = 1, num[1] = num[2] , nums:[0,1,1,1,1,2,2,3,3,4] * round2结束: j = 5 , i = 2, num[5] = 2, num[2] = num[5] , nums:[0,1,2,1,1,2,2,3,3,4] * round3结束: j = 7 , i = 3, num[7] = 3, num[3] = num[7] , nums:[0,1,2,3,1,2,2,3,3,4] * ....... nums:[0,1,2,3,4,2,2,3,3,4] * * @param nums 传入数组 nums = [0,0,1,1,1,2,2,3,3,4], * @return */ public static int removeDuplicates(int[] nums) { int i = 0; for (int j = 1; j < nums.length; j++) { if (nums[i] != nums[j]) { i++; nums[i] = nums[j]; } } return i + 1; } }

你可能感兴趣的:(leetcode,java)