2024-05-08:用go语言,给定一个由正整数组成的数组 nums,
找出数组中频率最高的元素,
然后计算该元素在数组中出现的总次数。
输入:nums = [1,2,2,3,1,4]。
输出:4。
答案2024-05-08:
chatgpt
题目来自leetcode3005。
大体步骤如下:
1.创建一个空的字典用于存储每个元素的出现次数。
cnt
2.初始化和为 0,分别表示当前最大的出现次数和频率最高的元素在数组中的总次数。
maxCnt
ans
3.遍历数组中的每个元素:
nums
- •将元素添加到字典中,并将其对应的值加一表示出现次数增加。
- cnt
- •获取元素的出现次数。
- c
- •如果大于,更新和为当前的出现次数。
- c
- maxCnt
- maxCnt
- ans
- c
- •如果等于,将当前的出现次数加到中。
- c
- maxCnt
- c
- ans
4.返回变量。
ans
总的时间复杂度:O(n),其中 n 是数组的长度,因为需要遍历整个数组。
nums
总的额外空间复杂度:O(k),其中 k 是数组中不同元素的个数,因为需要使用字典来存储元素的出现次数。
nums
cnt
Go完整代码如下:
packagemain
import"fmt"
funcmaxFrequencyElements(nums[]int)(ansint){
maxCnt:=0
cnt:=map[int]int{}
for_,x:=rangenums{
cnt[x]++
c:=cnt[x]
ifc>maxCnt{
maxCnt=c
ans=c
}elseifc==maxCnt{
ans+=c
}
}
return
}
funcmain(){
nums:=[]int{1,2,2,3,1,4}
ans:=maxFrequencyElements(nums)
fmt.Println(ans)
}
Python完整代码如下:
#-*-coding:utf-8-*-
defmax_frequency_elements(nums):
max_cnt=0
cnt={}
ans=0
forxinnums:
cnt[x]=cnt.get(x,0)+1
c=cnt[x]
ifc>max_cnt:
max_cnt=c
ans=c
elifc==max_cnt:
ans+=c
returnans
nums=[1,2,2,3,1,4]
ans=max_frequency_elements(nums)
print(ans)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.