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

news/2024/10/4 15:29:33

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 mainimport "fmt"func maxFrequencyElements(nums []int) (ans int) {maxCnt := 0cnt := map[int]int{}for _, x := range nums {cnt[x]++c := cnt[x]if c > maxCnt {maxCnt = cans = 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 = 0cnt = {}ans = 0for x in nums:cnt[x] = cnt.get(x, 0) + 1c = cnt[x]if c > max_cnt:max_cnt = cans = celif c == max_cnt:ans += creturn ansnums = [1, 2, 2, 3, 1, 4]
ans = max_frequency_elements(nums)
print(ans)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28928.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

报错:Error: Cannot find module

报错详情: 解决方法: 1、正确安装版本号的nodejs 2、删除项目根文件夹下的node_modules和“package-lock.json”, 3、重新执行npm install

上课学习(无线网络)

考红色部分:如什么协议采用集中式架构CAPWAP优点,红色部分

2024CVPR_Low-light Image Enhancement via CLIP-Fourier Guided Wavelet Diffusion(CFWD)

一、Motivation 1、单模态监督问题:大多数方法往往只考虑从图像层面监督增强过程,而忽略了图像的详细重建和多模态语义对特征空间的指导作用。这种单模态监督导致不确定区域的次优重建和较差的局部结构,导致视觉结果不理想的出现。------》扩散模型缺乏有效性约束,容易出现…

Jmeter-线程组下篇

线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要。线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下。 可以将线程组视为一个虚拟用户池,其中每个线程可被理解为一个虚拟用户,多个虚拟用户同时执行相同的一批任务。…

字符串相关

字符串相关 文章参考: [详解-字符串] C++必知必会 字符串-string常用各种操作解析 - 知乎 (zhihu.com) C++ 字符串(string)常用操作总结 - 知乎 (zhihu.com) c++读取字符串和字符的6种函数_c++获取字符串的每个字符-CSDN博客 字符串使用大全(比较实用的):C++中的String的…

二分

二分 浮点数二分模板bool check(double x) {/* ... */} // 检查x是否满足某种特性double bsearch_3(double l, double r) {const double eps = 1e-6;while(r - l > eps){double mid = (l + r) / 2;if(check(mid)) r = mid;else l = mid;} return l; }整数二分模板bool chec…

【攻防技术系列+Python】-- 用 Python 控制系统进程

用 Python 控制系统进程 由于注册表几乎可以决定整个操作系统的运行,因此它成为安全工具与恶意软件对抗的主要战场之一。除了注册表之外,对系统进程的控制也是安全工具和恶意软件的必争之地。这里我们首先要了解程序和进程的区别。程序是静态的,进程是动态的。进程可以分为系…

VMware如何将虚拟机的端口服务映射出去

我们有时候在VMware起了一个服务,想要局域网的朋友同事访问 这时候就需要i端口映射 选择NAT模式 VMnet8点击 NAT设置 然后点击添加然后映射传入端口对话框 红色部分是 你主机本机,也就是你在用的电脑的空闲端口(可以打开cmd 输入命令 : netstat -ano 查看已用端口都有哪些…