剑指offer 牛客网 面试题3:数组中重复的数字

法一:哈希表

public static boolean duplicate(int numbers[], int length, int[] duplication) {
        int[] hash = new int[length];
        for(int i = 0; i < length; i++){
            hash[numbers[i]]++;
        }
        for(int i = 0; i < length; i++){
            if(hash[i] > 1){
                duplication[0] = i;
                return true;
            }
        }

        return false;
}

duplication[0]相当于C语言中的*duplication

法二:Map

public static boolean duplicate(int numbers[], int length, int[] duplication) {
        if(length <= 0)
            return false;

        Map map = new HashMap<>();
        for(int i = 0; i < length; i++){
            if(map.containsKey(numbers[i])){
                duplication[0] = numbers[i];
                return true;
            }else{
                map.put(numbers[i],1);
            }
        }
        return false;
    }

法三:

你可能感兴趣的:(面试)