快轉到主要內容
leetcode 217 - Contains Duplicate

leetcode 217 - Contains Duplicate

·
類別 
Leetcode
標籤 
Java Leetcode Easy Array Problem Blind75
Eason Chiu
作者
Eason Chiu
一個不做筆記就容易忘記的工程師
目錄

題目
#

leetcode 217 - Contains Duplicate (題目說明請點連結)

題目簡述
#

判斷一個整數陣列中是否包含重複的元素。

範例
#

Example 1:

Input: nums = [1,2,3,1]
Output: true
Explanation: 陣列中有重複的元素 1。

Example 2:

Input: nums = [1,2,3,4]
Output: false
Explanation: 陣列中沒有重複的元素。

Example 3:

Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
Explanation: 陣列中有多個重複的元素。

解題思路
#

這題要求我們判斷一個整數陣列中是否包含重複的元素。我們可以使用 HashSet 來記錄已經出現過的數字,如果在遍歷過程中發現某個數字已經在 HashSet 中,則表示有重複。

解法
#

HashSet 查重法(HashSet Approach)

  1. 創建一個 HashSet 來存儲已經出現過的數字
  2. 遍歷陣列中的每個元素:
    • 如果當前元素已經在 HashSet 中,返回 true
    • 否則將當前元素加入 HashSet
  3. 如果遍歷完畢都沒有發現重複,返回 false

步驟
#

  • 初始化:
    • 創建 HashSet<Integer> set
  • 遍歷檢查:
    • 遍歷陣列中的每個元素
    • 檢查 set.contains(nums[i])
    • 如果包含,立即返回 true
    • 如果不包含,將元素加入 HashSet
  • 返回結果:
    • 如果沒有重複,返回 false

例子說明
#

nums = [1,2,3,1]

步驟 當前元素 HashSet內容 檢查結果 操作
初始化 - [] - 創建空的HashSet
第1輪 1 [] false 1不在set中,加入set
第2輪 2 [1] false 2不在set中,加入set
第3輪 3 [1,2] false 3不在set中,加入set
第4輪 1 [1,2,3] true 1已在set中,發現重複
最終結果 - [1,2,3] true 返回true,有重複元素

完整程式碼
#

java
class Solution {
    public boolean containsDuplicate(int[] nums) {
        // 創建HashSet來存儲已經出現過的數字
        HashSet<Integer> set = new HashSet<>();

        // 遍歷陣列中的每個元素
        for(int i = 0; i < nums.length; i++){
            // 檢查當前元素是否已經在HashSet中
            if(set.contains(nums[i])){
                // 如果包含,表示有重複,立即返回true
                return true;
            }

            // 如果不包含,將當前元素加入HashSet
            set.add(nums[i]);
        }

        // 如果遍歷完畢都沒有發現重複,返回false
        return false;
    }
}

時間複雜度
#

  • 時間複雜度O(n),其中 n 是陣列的長度,需要遍歷所有元素
  • 空間複雜度O(n),最壞情況下 HashSet 需要存儲所有不重複的元素

相關文章

leetcode 121 - Best Time to Buy and Sell Stock
類別 
Leetcode
標籤 
Java Leetcode Easy Array Problem Blind75
leetcode 21 - Merge Two Sorted Lists
類別 
Leetcode
標籤 
Java Leetcode Easy Linked List Problem Blind75
leetcode 252 - Meeting Rooms
類別 
Leetcode
標籤 
Java Leetcode Easy Blind75