LC-26:删除有序数组中的重复项
LC-26:删除有序数组中的重复项
我的代码实现:
public class Demone { public static void main(String[] args) { int[] array = new int[]{0,0,0,2,3,4,12,4,2,1}; System.out.println(removeDuplicates(array)); } public static int removeDuplicates(int[] nums) { HashSet<Integer> set = new HashSet<>(); int index = 0; for (int i = 0; i < nums.length; i++) { if (set.add(nums[i])) { nums[index++] = nums[i]; } } return index; } }
算法思路,这个刚开始想的是使用Set直接去重,然后返回set的size大小,但是测试发现不行,仔细一看,他是在原数组上进行改变的,所以,我对Set做出了一些改变,利用Set的去重特性,进行判断,如果可以添加就说明set中还没有该元素,然后利用一个下标对nums数组进行重现添加值,最后返回index的下标值。