2024-05-08:用go语言,给定一个由正整数组成的数组 nums, 找出数组中频率最高的元素, 然后计算该元素在数组中出现

举报
福大大架构师每日一题 发表于 2024/05/08 14:08:10 2024/05/08
【摘要】 2024-05-08:用go语言,给定一个由正整数组成的数组 nums,找出数组中频率最高的元素,然后计算该元素在数组中出现的总次数。输入:nums = [1,2,2,3,1,4]。输出:4。答案2024-05-08:chatgpt题目来自leetcode3005。 大体步骤如下:1.创建一个空的字典 cnt 用于存储每个元素的出现次数。2.初始化 maxCnt 和 ans 为 0,分别表示...

2024-05-08:用go语言,给定一个由正整数组成的数组 nums,

找出数组中频率最高的元素,

然后计算该元素在数组中出现的总次数。

输入:nums = [1,2,2,3,1,4]。

输出:4。

答案2024-05-08:

chatgpt

题目来自leetcode3005。

大体步骤如下:

1.创建一个空的字典 cnt 用于存储每个元素的出现次数。

2.初始化 maxCntans 为 0,分别表示当前最大的出现次数和频率最高的元素在数组中的总次数。

3.遍历数组 nums 中的每个元素 x

  • 将元素 x 添加到字典 cnt 中,并将其对应的值加一表示出现次数增加。

  • 获取元素 x 的出现次数 c

  • 如果 c 大于 maxCnt,更新 maxCntans 为当前的出现次数 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)

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。