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 main

import (
"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 := 0
for x := range set1 {
if set2[x] {
common++
}
} n1 := len(set1)
n2 := len(set2)
ans := n1 + n2 - common m := len(nums1) / 2
if n1 > m {
mn := min(n1-m, common)
ans -= n1 - mn - m
common -= 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 - common m = len(nums1) // 2
if n1 > m:
mn = min(n1 - m, common)
ans -= n1 - mn - m
common -= mn if n2 > m:
n2 -= min(n2 - m, common)
ans -= n2 - m return ans def min(a, b):
return a if a < b else b if __name__ == "__main__":
nums1 = [1, 2, 3, 4, 5, 6]
nums2 = [2, 3, 2, 3, 2, 3]
result = maximumSetSize(nums1, nums2)
print(result)

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

  1. 如何在EXCEL中找出第一列中不包含的第二列数据

    1.找出第一列中不包含的第二列数据:=IFERROR(VLOOKUP(A:A,B:B,1,0),"无") 2.A列相同,B列相加:=SUMIF(G:G,G1,J:J)

  2. 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组

    题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明:初始化 nums1 和 nums2 的元素数量分别为 m ...

  3. 在线性级别时间内找出无序序列中的第k个元素

    在一个无序序列中找出第k个元素,对于k很小或者很大时可以采取特殊的方法,比如用堆排序来实现 .但是对于与序列长度N成正比的k来说,就不是一件容易的事了,可能最容易想到的就是先将无序序列排序再遍历即可找 ...

  4. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  5. 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。

    给定两个字符串 s 和 t,它们只包含小写字母.字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母.请找出在 t 中被添加的字母. 示例: 输入: s = "abcd" ...

  6. 给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回

    给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回 //统计字符串中出现的字符的出现次数 public function strNum(){ ...

  7. 找出Java进程中大量消耗CPU

    原文:https://github.com/oldratlee/useful-shells useful-shells 把平时有用的手动操作做成脚本,这样可以便捷的使用. show-busy-java ...

  8. python -- 对list去重并找出列表list中的重复元素

    一.一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数. 代码: from collections imp ...

  9. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

  10. Python算法每日一题--001--给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...

随机推荐

  1. KingbaseES数据库适配Activiti7 didn't put process definition问题处理过程

    一.Activiti介绍 Activiti是一个轻量级的java开源BPMN 2工作流引擎.目前以升级至7.x,支持与springboot2.x集成. 二.项目环境 Spring Boot版本2.2. ...

  2. Refresh Clean Code

    这是一本被前辈称赞, 另一个马丁的知名著作, 被赋予学习如何写出漂亮代码的教皇级手册, 最近(再)浏览, 有诸多感受. 总结一下就是如果你是新手, 可能看优秀的open source学习更好; 如果你 ...

  3. OpenHarmony 官网文档有哪些上新?上篇:应用开发文档上新

    随着 OpenAtom OpenHarmony(以下简称"OpenHarmony")系统能力持续升级,已具备支撑复杂带屏标准设备和应用开发的基础能力.相较于旧版本,OpenHarm ...

  4. 仅需30行代码,轻松集成HMS Core视频编辑服务屏幕录制能力

    现如今,手机录屏是必不可少的能力之一.对于游戏领域作者来说,在平时直播玩游戏.制作攻略.操作集锦时,不方便切屏,这时在游戏内如果有一个录制按钮就可以随时开启,记录下每个精彩瞬间,减少后期剪辑工作量:在 ...

  5. 【FAQ】用户访问次数不变,访问时长却突增2倍,分析服务发生数据异常该如何解决?

    在产品运营的工作过程中,需要每日关注产品的核心指标变化情况,监控其整体运营状况.华为分析服务提供查看吸引新用户卡片,该卡片展示了新增用户数.人均会话次数.人均访问时长.人均页面访问数.借助该页面运营可 ...

  6. react native 0.73 配置 react-native-fs

    安装react-native-fs npm npm install react-native-fs --save yarn yarn add react-native-fs 安卓配置 android/ ...

  7. 重新点亮linux 命令树————网络故障排除[十一五]

    前言 简单整理一下网络故障不可达命令. 正文 ping 是否能ping traceroute 追踪路由跳转 mtr 检查数据包是否丢失 nslookup telnet 端口是否可达 tcpdump 能 ...

  8. spring boot @propertySource @importResource @Bean [六]

    @propertySource 指定property的配置源. 创建一个person.property: 然后修改person注解; 在运行test之后,结果为: @importResource 这个 ...

  9. 使用WebApi+Vue3从0到1搭建《权限管理系统》:二、搭建JWT系统鉴权

    视频地址:[WebApi+Vue3从0到1搭建<权限管理系统>系列视频:搭建JWT系统鉴权-哔哩哔哩] https://b23.tv/R6cOcDO qq群:801913255 一.在ap ...

  10. ImageJ软件使用教程(二):图像测量

    目录 图像比例尺 加载图像 设置比例尺 标注比例尺 测量长度面积 测量长度 测量面积 参考资料 图像比例尺 使用ImageJ软件测量图像中的长度.面积等信息时,需要先设置图像的比例尺,比例尺用于将图像 ...