題目連結:
題目意譯:
給定一整數陣列 arr,一個幸運整數為一整數,其滿足在陣列中的出現次數恰好等於其值本身。
回傳陣列中的最大幸運整數。如果沒有幸運整數,則回傳 -1。
限制:
1 ≦ arr.length ≦ 500
1 ≦ arr[i] ≦ 500
範例測資:
範例 1:
輸入: arr = [2,2,3,4]
輸出: 2
解釋: 陣列中唯一一個幸運整數為 2,因為 frequency[2] == 2。
(譯者注:是的,這題完全沒有定義 frequency 陣列,單純地憑空生了出來。不管如何,這邊的 frequency[2] 就是指 2 這個元素的出現次數)。
範例 2:
輸入: arr = [1,2,2,3,3,3]
輸出: 3
解釋: 1 、 2 和 3 都是幸運整數,回傳它們當中最大者。
範例 3:
輸入: arr = [2,2,2,3,3]
輸出: -1
解釋: 陣列中沒有幸運整數存在。
解題思維:
因為 arr 中的數字最小為 1、最大 500,所以我們可以直接統計 1 ~ 500 各自在 arr 中出現多少次。
然後從 500 開始掃到 1 為止對於每種數字 i 去檢查出現次數是否恰好是 i 次。如果是就回傳該數字 i;反之如果沒有這樣的數字存在,則回傳 -1。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。