当前位置: 首页 > news >正文

Leetcode 3002. Maximum Size of a Set After Removals

  • Leetcode 3002. Maximum Size of a Set After Removals
    • 1. 解题思路
    • 2. 代码实现
    • 3. 算法优化
  • 题目链接:10037. Maximum Size of a Set After Removals

1. 解题思路

这一题的话我的思路就是分别以两个数组作为主数组,然后从中选择 n / 2 n/2 n/2个元素,并使得另一个数组当中不包含这些数字,然后考察剩下的那个数组当中可以保留下多少数字,两者加和即可得到对应取法下的最大值。

对此,我们只需要先将主数组当中的元素按照另一个数组当中出现的频次进行排序然后顺序选取即可。

然后,我们从最后的两个答案当中选出最大值即可。

2. 代码实现

给出python代码实现如下:

class Solution:def maximumSetSize(self, nums1: List[int], nums2: List[int]) -> int:n = len(nums1)cnt1 = Counter(nums1)cnt2 = Counter(nums2)set1 = set(nums1)set2 = set(nums2)s1 = sorted(set1, key=lambda x: cnt2[x])[:n//2]s2 = set2 - set(s1)ans1 = len(s1) + min(len(s2), n//2)s2 = sorted(set2, key=lambda x: cnt1[x])[:n//2]s1 = set1 - set(s2)ans2 = min(len(s1), n//2) + len(s2)return max(ans1, ans2)

提交代码评测得到:耗时604ms,占用内存29.8MB。

3. 算法优化

看了一下大佬们的解答,发现他们的思路更加直接一点,其实也是我最开始的思路,不过后来我想岔了,还以为会有特殊情况……

简单来说,就是分别从两个数组当中选出所有的只出现在一个数组当中的元素,然后拼接上剩余那些在两个数组当中都有出现的数组,拼接到最终的 n n n个元素即可。

给出python代码实现如下:

class Solution:def maximumSetSize(self, nums1: List[int], nums2: List[int]) -> int:N = len(nums1)nums1, nums2 = set(nums1), set(nums2)both = nums1 & nums2one = nums1 ^ bothtwo = nums2 ^ bothfrom_one = min(N//2, len(one))from_two = min(N//2, len(two))return min(from_one + from_two + len(both), N)

提交代码评测得到:耗时498ms,占用内存30MB。

相关文章:

  • 【Verilog】期末复习——设计11011序列检测器电路
  • 关于ubuntu20.04(Linux)屏幕突然横屏的解决方案
  • 开源C语言库Melon:多线程治理
  • 《数据库概述》 第七章 数据库设计
  • 6.OpenResty系列之深入理解(二)
  • PHPStudy快速搭建网站并结合内网穿透远程访问本地站点
  • 添加一个编辑的小功能(PHP的Laravel)
  • 计算机创新协会冬令营——暴力枚举题目03
  • 063:vue中一维数组与三维数组联动,类似购物车增减
  • 查看Linux系统内存、CPU、磁盘使用率和详细信息
  • Linux du和df命令
  • web学习笔记(十四)
  • spring-mvc数据绑定和表单标签库(介绍)
  • 51-5 Transformer 论文精读
  • Java反射获取实例并填充注解值
  • Apache Pulsar 2.1 重磅发布
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Django 博客开发教程 8 - 博客文章详情页
  • Java IO学习笔记一
  • Java 内存分配及垃圾回收机制初探
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Spark学习笔记之相关记录
  • Spring Cloud中负载均衡器概览
  • Tornado学习笔记(1)
  • WebSocket使用
  • web标准化(下)
  • WePY 在小程序性能调优上做出的探究
  • windows下使用nginx调试简介
  • Xmanager 远程桌面 CentOS 7
  • 初识MongoDB分片
  • 创建一种深思熟虑的文化
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 对象引论
  • 记一次和乔布斯合作最难忘的经历
  • 扑朔迷离的属性和特性【彻底弄清】
  • 七牛云假注销小指南
  • 如何设计一个微型分布式架构?
  • 原生Ajax
  • 1.Ext JS 建立web开发工程
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 湖北分布式智能数据采集方法有哪些?
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (zt)最盛行的警世狂言(爆笑)
  • (二)c52学习之旅-简单了解单片机
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (转)视频码率,帧率和分辨率的联系与区别