菜鳥初刷LeetCode——數組(3) containsDuplicate 存在重複

給定一個整數數組,判斷是否存在重複元素。

如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。

 

思路一:

 排序然後遍歷,當和下一個相等,就輸出

 

思路二:

放入set,然後比較原數組長度和set的長度,相等就是沒重複

 

 思路三:

循環,然後每次都去看這個數字之前有沒有和 這個數字相等的數。最終超時。

 

思路四(看別人的):

這種適用於計數。

利用HashMap 將數組的值當做key,而次數當做value,不過在這裏只要找到有重複的就返回true,只需要每次判斷多對應的鍵值存不存在值就行,如果 存在那麼肯定重複返回true,否則加入HashMap中。

 

 代碼:自己的三種 實現:

public class ContainsDuplicate {
    public boolean containsDuplicate_1(int[] nums) {
        Arrays.sort(nums);
        for (int i=0; i<nums.length-1; i++){
            if (nums[i] == nums[i+1]){
                return true;
            }
        }
        return false;
    }

    public boolean containsDuplicate_2(int[] nums) {
        HashSet<Integer> set = new HashSet();
        List arr = Arrays.asList(nums);
        set.addAll(arr);
        if (arr.size()!=set.size()){
            return true;
        }
        return false;
    }

    public boolean containsDuplicate_3(int[] nums) {
        for (int i=0; i<nums.length; i++){
            for (int j=i-1; j>=0; j--){
                if (nums[i] == nums[j]){
                    return true;
                }
            }
        }
        return false;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章