数据结构和算法LeetCode,初级算法-4存在重复元素

Posted 数据结构和算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构和算法LeetCode,初级算法-4存在重复元素相关的知识,希望对你有一定的参考价值。

截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666

视频分析

LeetCode,初级算法-存在重复元素


代码部分

1,暴力破解

    public boolean containsDuplicate(int[] nums) 
        for (int i = 0; i < nums.length; i++) 
            for (int j = i + 1; j < nums.length; j++) 
                if (nums[i] == nums[j]) 
                    return true;
                
            
        
        return false;
    

2,排序

    public boolean containsDuplicate(int[] nums) 
        Arrays.sort(nums);
        for (int ind = 1; ind < nums.length; ind++) 
            if (nums[ind] == nums[ind - 1]) 
                return true;
            
        
        return false;
    

3,使用HashSet

    public boolean containsDuplicate(int[] nums) 
        Set<Integer> set = new HashSet<>();
        for (int num : nums) 
            //因为集合set中不能有重复的元素,如果有重复的
            //元素添加,就会添加失败
            if (!set.add(num))
                return true;
        
        return false;
    

4,位运算

    public boolean containsDuplicate(int[] nums) 
        //找出数组中的最大值和最小值
        int min = nums[0];
        int max = min;
        for (int num : nums) 
            min = Math.min(min, num);
            max = Math.max(max, num);
        
        //计算数组中最大值和最小值的差值,目的是要确定位图的长度
        int distant = max - min + 1;
        long[] bitmap = new long[(distant - 1) / 64 + 1];
        for (int num : nums) 
            //根据当前数字到最小数字的长度,定位到当前数字在位图
            //中的位置。判断这个位置是不是1,如果是1,说明存在
            //重复的数字
            int tmp = num - min;
            if ((bitmap[tmp / 64] & (1L << (tmp % 64))) != 0)
                return true;
            //如果不存在重复的数字,就把当前这个位置变为1
            bitmap[tmp / 64] |= 1L << (tmp % 64);
        
        return false;
    

以上是关于数据结构和算法LeetCode,初级算法-4存在重复元素的主要内容,如果未能解决你的问题,请参考以下文章

数据结构和算法LeetCode,初级算法-7加一

数据结构和算法LeetCode,初级算法-7加一

数据结构和算法LeetCode,初级算法-8移动零

数据结构和算法LeetCode,初级算法-13整数反转

数据结构和算法LeetCode,初级算法-13整数反转

数据结构和算法LeetCode,初级算法-8移动零