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的下标值。

全部评论

相关推荐

点赞 评论 收藏
分享
耀孝女:就是你排序挂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务