2404. 出現(xiàn)最頻繁的偶數(shù)元素
2023-03-23 10:47 作者:目標力扣Knight | 我要投稿

方法一:暴力+ 哈希
哈希表存儲所有的偶數(shù)及其出現(xiàn)次數(shù),若該哈希表為空則說明全為奇數(shù),直接返回-1;
用變量max_freq
保存哈希表中最大詞頻,若無則說明出現(xiàn)次數(shù)均等,則將其賦值為1;
找到出現(xiàn)次數(shù)與變量相等的所有數(shù),返回其中的最小值即可;
Python版本
C++版本
復(fù)雜度分析
時間復(fù)雜度:O(N)。此處的 n 指的是數(shù)組
nums
的長度,考慮最壞情況,nums
數(shù)組均為偶數(shù)且僅出現(xiàn)一次,遍歷哈希和存儲元素共需要 2000 ?* 2 = 4000。空間復(fù)雜度:O(N)。 如上所言,需要兩倍的空間,即 2000 ?* 2 = 4000。
備注
本方法特別笨蛋,使用了兩個哈希表一個數(shù)組,空間開銷巨大,特別是用數(shù)組實現(xiàn)哈希表,該數(shù)組毫無伸縮性;
可以從此份C++代碼中抽離公共結(jié)構(gòu),即:如何判斷一個數(shù)組的所有元素同值?如何判斷一個數(shù)組沒有最大值?
如何在不暫存的情況下,能否一次遍歷找到出現(xiàn)次數(shù)最小的數(shù)?
方法二:哈希 + 一次遍歷
僅統(tǒng)計偶數(shù)的詞頻,設(shè)定詞頻邊界和數(shù)值上限,遍歷整個哈希表,當前詞頻大于默認值的則更新,詞頻相等則判斷詞的大小關(guān)系,遇到比當前值小的才更新。
Python版本
C++版本
復(fù)雜度分析
時間復(fù)雜度:O(N)。此處的 n 指的是
nums
數(shù)組中長度上限2000 * 2 = 4000
。空間復(fù)雜度:O(N)。此處的 n 指的是 考慮最壞情況每個數(shù)字全為偶數(shù)且僅出現(xiàn)一次,約為2000。
標簽: