2024-05-08:用go语言,给定一个由正整数组成的数组 nums, 找出数组中频率最高的元素, 然后计算该元素在数组中出现的总次数。 输入:nums = [1,2,2,3,1,4]。 输出:4。
2024-05-08:用go语言,给定一个由正整数组成的数组 nums,
找出数组中频率最高的元素,
然后计算该元素在数组中出现的总次数。
输入:nums = [1,2,2,3,1,4]。
输出:4。
答案2024-05-08:
题目来自leetcode3005。
大体步骤如下:
1.创建一个空的字典 cnt
用于存储每个元素的出现次数。
2.初始化 maxCnt
和 ans
为 0,分别表示当前最大的出现次数和频率最高的元素在数组中的总次数。
3.遍历数组 nums
中的每个元素 x
:
-
将元素
x
添加到字典cnt
中,并将其对应的值加一表示出现次数增加。 -
获取元素
x
的出现次数c
。 -
如果
c
大于maxCnt
,更新maxCnt
和ans
为当前的出现次数c
。 -
如果
c
等于maxCnt
,将当前的出现次数c
加到ans
中。
4.返回变量 ans
。
总的时间复杂度:O(n),其中 n 是数组 nums
的长度,因为需要遍历整个数组。
总的额外空间复杂度:O(k),其中 k 是数组 nums
中不同元素的个数,因为需要使用字典 cnt
来存储元素的出现次数。
Go完整代码如下:
package main
import "fmt"
func maxFrequencyElements(nums []int) (ans int) {
maxCnt := 0
cnt := map[int]int{}
for _, x := range nums {
cnt[x]++
c := cnt[x]
if c > maxCnt {
maxCnt = c
ans = c
} else if c == maxCnt {
ans += c
}
}
return
}
func main() {
nums := []int{1, 2, 2, 3, 1, 4}
ans := maxFrequencyElements(nums)
fmt.Println(ans)
}
Python完整代码如下:
# -*-coding:utf-8-*-
def max_frequency_elements(nums):
max_cnt = 0
cnt = {}
ans = 0
for x in nums:
cnt[x] = cnt.get(x, 0) + 1
c = cnt[x]
if c > max_cnt:
max_cnt = c
ans = c
elif c == max_cnt:
ans += c
return ans
nums = [1, 2, 2, 3, 1, 4]
ans = max_frequency_elements(nums)
print(ans)
公众号:福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2023-05-08 2023-05-08:我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符, 并返回唯一字符的个数。 例如:s = “LEETCODE“ ,则其中 “L“, “T
2023-05-08 2020-05-25:MQ应用场景、Kafka和rabbit区别?kafka为什么支撑高并发?
2022-05-08 2022-05-08:给你一个下标从 0 开始的字符串数组 words 。每个字符串都只包含 小写英文字母 。words 中任意一个子串中,每个字母都至多只出现一次。 如果通过以下操作之一,我们可以
2021-05-08 2021-05-08:给定两个非负数组x和hp,长度都是N,再给定一个正数range。x有序,x[i]表示i号怪兽在x轴上的位置;hp[i]表示i号怪兽的血量 。range表示法师如果站在x位置,用A