IOS 算法(基礎(chǔ)篇) ----- 找出數(shù)組中的幸運數(shù)

在整數(shù)數(shù)組中,如果一個整數(shù)的出現(xiàn)頻次和它的數(shù)值大小相等,我們就稱這個整數(shù)為「幸運數(shù)」。
給你一個整數(shù)數(shù)組 arr,請你從中找出并返回一個幸運數(shù)。
如果數(shù)組中存在多個幸運數(shù),只需返回 最大 的那個。
如果數(shù)組中不含幸運數(shù),則返回 -1 。

示例 1:
輸入:arr = [2,2,3,4]
輸出:2

示例 2:
輸入:arr = [1,2,2,3,3,3]
輸出:3

示例 3:
輸入:arr = [2,2,2,3,3]
輸出:-1

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

示例 5:
輸入:arr = [7,7,7,7,7,7,7]
輸出:7

哈希法

以出現(xiàn)數(shù)字做key, 出現(xiàn)次數(shù)做value
生成字典
key == value 就是我們要找的幸運數(shù)
判斷最大的 key/value 就是我們想要的

    func findLucky(_ arr: [Int]) -> Int {
        let carr = arr.sorted()
        var dic = [Int:Int](), result = -1
        for i in carr {
            dic[i] = (dic[i] ?? 0) + 1
        }
        for (key, value) in dic {
            if key == value {
                result = max(result, value)
            }
        }
        return result
    }

題目來源:力扣(LeetCode) 感謝力扣爸爸 :)
IOS 算法合集地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容