2404. 出现最频繁的偶数元素
2023-03-23 10:47 作者:目标力扣Knight | 我要投稿

方法一:暴力+ 哈希
哈希表存储所有的偶数及其出现次数,若该哈希表为空则说明全为奇数,直接返回-1;
用变量max_freq
保存哈希表中最大词频,若无则说明出现次数均等,则将其赋值为1;
找到出现次数与变量相等的所有数,返回其中的最小值即可;
Python版本
C++版本
复杂度分析
时间复杂度:O(N)。此处的 n 指的是数组
nums
的长度,考虑最坏情况,nums
数组均为偶数且仅出现一次,遍历哈希和存储元素共需要 2000 * 2 = 4000。空间复杂度:O(N)。 如上所言,需要两倍的空间,即 2000 * 2 = 4000。
备注
本方法特别笨蛋,使用了两个哈希表一个数组,空间开销巨大,特别是用数组实现哈希表,该数组毫无伸缩性;
可以从此份C++代码中抽离公共结构,即:如何判断一个数组的所有元素同值?如何判断一个数组没有最大值?
如何在不暂存的情况下,能否一次遍历找到出现次数最小的数?
方法二:哈希 + 一次遍历
仅统计偶数的词频,设定词频边界和数值上限,遍历整个哈希表,当前词频大于默认值的则更新,词频相等则判断词的大小关系,遇到比当前值小的才更新。
Python版本
C++版本
复杂度分析
时间复杂度:O(N)。此处的 n 指的是
nums
数组中长度上限2000 * 2 = 4000
。空间复杂度:O(N)。此处的 n 指的是 考虑最坏情况每个数字全为偶数且仅出现一次,约为2000。