欢迎光临散文网 会员登陆 & 注册

2404. 出现最频繁的偶数元素

2023-03-23 10:47 作者:目标力扣Knight  | 我要投稿

2404. 出现最频繁的偶数元素

方法一:暴力+ 哈希

哈希表存储所有的偶数及其出现次数,若该哈希表为空则说明全为奇数,直接返回-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。

备注


2404. 出现最频繁的偶数元素的评论 (共 条)

分享到微博请遵守国家法律