在整數(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 算法合集地址