2024-05-01:用go语言,给定两个长度为偶数n的整数数组nums1和nums2, 分别移除它们各自的一半元素, 将剩下的元素合并成集合s。 找出集合s中可能包含的最多元素数量。 输入:nums

news/2024/10/15 0:20:00

2024-05-01:用go语言,给定两个长度为偶数n的整数数组nums1和nums2,

分别移除它们各自的一半元素,

将剩下的元素合并成集合s。

找出集合s中可能包含的最多元素数量。

输入:nums1 = [1,2,3,4,5,6], nums2 = [2,3,2,3,2,3]。

输出:5。

答案2024-05-01:

chatgpt

题目来自leetcode3002。

大体步骤如下:

1.创建两个空的布尔型map,分别为set1和set2,用于存储nums1和nums2中的元素。

2.遍历nums1,将元素添加到set1中,以便记录每个元素的出现情况。

3.遍历nums2,将元素添加到set2中,同样记录每个元素的出现情况。

4.记录两个数组的交集元素数量,这里用common表示。

5.获取set1和set2中各自不同元素的数量,分别为n1和n2。

6.初始化答案ans为n1 + n2 - common,即为合并后的集合s中可能包含的最多元素数量。

7.计算移除元素的数量m(即数组长度的一半)。

8.如果set1中的元素数量大于m,则进入条件判断:

  • 找出需要移除的元素数量(mn)为n1 - m和common中较小的值。

  • 更新答案ans,减去需要移除的元素数量。

  • 更新common,减去移除的数量mn。

9.同样处理set2中的元素:

  • 如果set2中的元素数量大于m,则继续进行下一步操作。

  • 更新n2,减去需要移除的元素数量,确保集合s的大小不超过m。

  • 更新答案ans,相应地减去多余的元素数量。

10.返回最终的答案ans。

总的时间复杂度为O(n),其中n表示nums1和nums2的总长度。

总的额外空间复杂度是O(n),主要用于存储set1和set2的元素。

Go完整代码如下:

package mainimport ("fmt"
)func maximumSetSize(nums1, nums2 []int) int {set1 := map[int]bool{}for _, x := range nums1 {set1[x] = true}set2 := map[int]bool{}for _, x := range nums2 {set2[x] = true}common := 0for x := range set1 {if set2[x] {common++}}n1 := len(set1)n2 := len(set2)ans := n1 + n2 - commonm := len(nums1) / 2if n1 > m {mn := min(n1-m, common)ans -= n1 - mn - mcommon -= mn}if n2 > m {n2 -= min(n2-m, common)ans -= n2 - m}return ans
}func min(a, b int) int {if a < b {return a}return b
}func main() {nums1 := []int{1, 2, 3, 4, 5, 6}nums2 := []int{2, 3, 2, 3, 2, 3}result := maximumSetSize(nums1, nums2)fmt.Println(result)
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-def maximumSetSize(nums1, nums2):set1 = set(nums1)set2 = set(nums2)common = len(set1 & set2)n1 = len(set1)n2 = len(set2)ans = n1 + n2 - commonm = len(nums1) // 2if n1 > m:mn = min(n1 - m, common)ans -= n1 - mn - mcommon -= mnif n2 > m:n2 -= min(n2 - m, common)ans -= n2 - mreturn ansdef min(a, b):return a if a < b else bif __name__ == "__main__":nums1 = [1, 2, 3, 4, 5, 6]nums2 = [2, 3, 2, 3, 2, 3]result = maximumSetSize(nums1, nums2)print(result)

在这里插入图片描述

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

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

相关文章

nestjs如何使用typeorm

默认你有点nestjs基础第一步安装npm add @nestjs/typeorm typeorm mysql2第二步 imports: [TypeOrmModule.forRoot({type:mysql,host:,port:3306,username:,password:,database:,entities:[User,User1],synchronize:true}), UsersModule, Users1Module],UsersModule是我加的模块…

强烈推荐,企业级消息推送神器:Austin,让沟通无处不在!

PDF格式公众号回复关键字:ZKCH002开源一个支持email,短信,语音,服务号,小程序,企业wx,钉钉,飞书,APP推送等消息类型的推送系统 随着企业数字化程度越来越高,不同的系统通过消息推送来增强业务流程的通信效率和协调性场景越来越多。以下是一些具体系统中使用到消息推送…

kubernetes的搭建(一)

集群的搭建 集群的类型kubunetes的集群类型大致上分为两类: 一主多从和多主多从。一主多从: 一台master节点和多台node节点,搭建简单,但是有单机故障的风险,适用于测试环境 多主多从: 多台master节点和多台node节点,搭建麻烦,安全性高,适用于生产环境为了测试简单,本…

.mat文件转换为png

将CFD(CrackForest Datasets)数据集的GroundTruth中的.mat文件转换为便于使用的maskpng将CFD(CrackForest Datasets)数据集的GroundTruth中的.mat文件转换为便于使用的maskpng dotmat2png.py import scipy.io import numpy as np import cv2 import osdef save_mask(mat_fi…

CF628F Bear and Fair Set

传送门网络流好题。 先将所有限制按 \(u_i\) 排序,同时令 \(u_0=0,t_0=0\) 和 \(u_{q+1}=b,t_{q+1}=n\)。(下面就把 \(q\leftarrow q+1\) 了) 这些限制会把 \(1\sim b\) 分成 \(q\) 段。先检查一遍,如果出现 \(u_i\) 更大反而 \(t_i\) 更小,unfair;如果出现一个段内数的个…

WDS+MDT网络启动自动部署windows(十二)查错的方法

简介 各种错误不断,那么怎么检查呢? MDT日志 MDT终端是待安装的,而且也不知道安装临时文件是存在内存的虚拟磁盘还是真实磁盘。我不深究。 那么就需要将MDT的日志回写到服务器上,才方便服务器检查错误。 共享 在任意服务器创建logs$共享,允许mdt写入,记得共享权限和NTFS权…

Vue .browserslistrc

Vue .browserslistrc在使用脚手架搭建项目时,会自动生成.browserslistrc文件,该文件只要是 配置兼容浏览器对于部分配置参数做一些解释:" >1%" :代表着全球超过1%人使用的浏览器“last 2 versions” : 表示所有浏览器兼容到最后两个版本“not ie <=8” :表示…

Vue .eslintignore

Vue .eslintignore 项目根目录如果没有 .eslintignore 文件,需要手动添加即可 用法如下指定某文件夹包括里面的所有文件都忽略 build src/assets指定某文件夹里面的指定文件类型都忽略 build/*.js指定某文件夹里面的指定文件忽略 src/index.js指定某文件夹里的除某个文件之外…