写点什么

2024-05-08:用 go 语言,给定一个由正整数组成的数组 nums, 找出数组中频率最高的元素, 然后计算该元素在数组中出现的总次数。 输入:nums = [1,2,2,3,1,4]。 输出:4。

  • 2024-05-08
    北京
  • 本文字数:790 字

    阅读完需:约 3 分钟

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)
复制代码



发布于: 刚刚阅读数: 2
用户头像

公众号:福大大架构师每日一题 2021-02-15 加入

公众号:福大大架构师每日一题

评论

发布
暂无评论
2024-05-08:用go语言,给定一个由正整数组成的数组 nums, 找出数组中频率最高的元素, 然后计算该元素在数组中出现的总次数。 输入:nums = [1,2,2,3,1,4]。 输出:4。_福大大架构师每日一题_福大大架构师每日一题_InfoQ写作社区