「力扣」217. 存在重複元素(第八天)

217. 存在重複元素

題目

題目難度:簡單
給定一個整數數組,判斷是否存在重複元素。

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

示例1:

輸入: [1,2,3,1]
輸出: true

示例 2:

輸入: [1,2,3,4]
輸出: false

解題

方法一:快慢指針
我是這樣想的,先進行排序,如果存在相同元素的話,那麼前一個元素就會和後一個元素相同,這樣就把問題轉換爲第二天的去除相同元素的問題了

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Arrays.sort(nums);
        int fast = 1;
        int slow = 0;
        for(; fast < nums.length ; fast++){
            if(nums[slow++] == nums[fast]){
                return true;
            }
        }
        return false;
    }
}

方法二:哈希
用set集合,最主要的就是:Set集合不允許包含相同的元素,如果試圖把兩個相同元素加入同一個Set集合中,則添加操作失敗,add()方法返回false,且新元素不會被加入。
JAVA中的Set函數

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int n : nums) {
            if (!set.add(n)) {
                return true;
            }
        }
        return false;
    }
}

「力扣」219. 存在重複元素 II (第九天)
在這裏插入圖片描述

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