LeetCode1394-找出數組中的幸運數

 

非商業,LeetCode連接附上:java

https://leetcode-cn.com/problems/find-lucky-integer-in-an-array/數組

進入正題。.net

 

題目:code

在整數數組中,若是一個整數的出現頻次和它的數值大小相等,咱們就稱這個整數爲「幸運數」。blog

給你一個整數數組 arr,請你從中找出並返回一個幸運數。leetcode

若是數組中存在多個幸運數,只需返回 最大 的那個。
若是數組中不含幸運數,則返回 -1 。get

示例:class

示例 1:遍歷

輸入:arr = [2,2,3,4]
輸出:2
解釋:數組中惟一的幸運數是 2 ,由於數值 2 的出現頻次也是 2 。
示例 2:方法

輸入:arr = [1,2,2,3,3,3]
輸出:3
解釋:一、2 以及 3 都是幸運數,只須要返回其中最大的 3 。
示例 3:

輸入:arr = [2,2,2,3,3]
輸出:-1
解釋:數組中不存在幸運數。
示例 4:

輸入:arr = [5]
輸出:-1
示例 5:

輸入:arr = [7,7,7,7,7,7,7]
輸出:7
 

提示:

1 <= arr.length <= 500
1 <= arr[i] <= 500

代碼實現:

public int findLucky(int[] arr) {
        
        Map<Integer, Integer> m = new HashMap<>();

        for (int x : arr) {
            m.put(x, m.getOrDefault(x, 0) + 1);//注意: getOrDefault()方法的使用
        }

        int ans = -1;
        for (Map.Entry<Integer, Integer> entry : m.entrySet()) {
            int key = entry.getKey();
            int value = entry.getValue();
            if(key == value) {
                ans = Math.max(ans, key);
            }
        }
        return ans;

}
//時間複雜度O(n),空間複雜度O(n)

 

分析:

經過哈希映射,遍歷數組獲得全部不一樣的數和這些數出現次數的對應關係。

經過肯定了的哈希映射關係,進行「幸運數」的判斷&比較,獲得最大的幸運數。

 

--End

 

本文分享 CNBlog - 黑冰臺。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索