判断是否存在重复元素的各种代码整理

给定一个整数数组,判断是否存在重复元素。

如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

最简洁的代码: set函数去重

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        return len(nums) != len(set(nums))

java 一行:

 public boolean containsDuplicate(int[] nums) {
            return Arrays.stream(nums).distinct().count() < nums.length;
    }

时空复杂度都很高

脑洞绝活类:

“随机算法,掷10万次2个骰子,万一发现有一次一样的就有,10万次都不一样就当做不存在重复吧,特殊案例再处理一下。”

bool containsDuplicate(int* nums, int numsSize){
    int i;
    int a,b;
    srand(time(0));
    if(0 == numsSize||1 == numsSize ){
        return false;
    }
    for(i=0; i<100000; i++){
        a = rand()%numsSize;
        b = rand()%numsSize;
        
        if(a!=b && (nums[a] == nums[b])){
            return true;
        }
    }
    return 9999 == nums[numsSize-1];
        
}

java自带去重

class Solution {
public boolean containsDuplicate(int[] nums) {
        Set<Integer> res = new HashSet<Integer>();
        for(int i:nums)
            res.add(i);
        return res.size()<nums.length;
    }
}

java正常解法:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length;
        for (int i = 0; i < n - 1; i++) {
            if (nums[i] == nums[i + 1]) {
                return true;
            }
        }
        return false;
    }
}
原文地址:https://www.cnblogs.com/ranzhong/p/14128638.html