LeetCode #1207 Unique Number of Occurrences 出現次數是否唯一

英文原文如下

Given an array of integers arr, return true if the number of occurrences of each value in the array is unique or false otherwise.

中文翻譯

給予一個整數陣列 arr,要是陣列中每一個出現的值的次數都是唯一的就回傳 true ,不是的話就回傳 false 

範例及題目限制

範例2中, 1出現了1次,2出現了1次 (因為1次不是唯一的次數,故回傳 false )


解題思路

在我們的解法中,我們會使用 Dictionary來儲存出現的數字以及其出現的次數 (Key 跟 Value)

再來,針對整個字典用 HashSet來判斷該次數有沒有出現過

C# 解決方案

方案1

public class Solution {
    public bool UniqueOccurrences(int[] arr) {
        Dictionary<int,int> dict =   new Dictionary<int,int>();

        //1.count number of occurrences of each value
        foreach(var a in arr)
        {
            if (!dict.ContainsKey(a))
            {
                dict.Add(a, 1);
            }
            else
            {
                dict[a] = dict[a]+1;
            }
        }

        //2.check if there any same number by HashSet
        HashSet<int> hSet = new HashSet<int>();
        foreach(var item in dict)
        {
            if(hSet.Contains(item.Value))
            {
                return false;
            }
            hSet.Add(item.Value);
        }

        return true;
    }
}

Java解決方案

方案1

class Solution {
    public boolean uniqueOccurrences(int[] arr) {
        Map<Integer, Integer> dict = new HashMap<Integer, Integer>();
        //1.count number of occurrences of each value
        for(int a : arr)
        {
            if (!dict.containsKey(a))
            {
                dict.put(a, 1);
            }
            else
            {
                dict.put(a, dict.get(a)+1);
            }
        }

        //2.check if there any same number by HashSet
        HashSet<Integer> hSet = new HashSet<Integer>();
        for(int val : dict.values()) 
        {
            if(hSet.contains(val))
            {
                return false;
            }
            hSet.add(val);
        }

        return true;
    }
}

結論

只要會用 Dictionary以及HashSet就會覺得沒難度的一題

但讓兩年前的我來寫,大概也是個寫到頭很痛的題目

🧡如果這篇文章有幫上你的一點點忙,那是我的榮幸

🧡收藏文章或幫我點個廣告,那都是對我的支持

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

題目連結 : Unique Number of Occurrences – LeetCode

這裡看一題類似的,也是用到Dict/Map以及HashSet的問題 : LeetCode #290 Word Pattern 單詞樣板(模式)

一些隨機的LeetCode文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *