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:

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)

在这里插入图片描述

posted @   福大大架构师每日一题  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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
点击右上角即可分享
微信分享提示