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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口限流方案

1.1 为什么要进行限流? 1.瞬时流量过高,服务被压垮? 2.恶意用户高频光顾,导致服务器宕机? 3.消息消费过快,导致数据库压力过大,性能下降甚至崩溃? 1.2 什么是限流 限流是对某一…

Zuul相关问题及到案(2024)

1、什么是Zuul?它在微服务架构中有什么作用? Zuul是Netflix开源的一种提供API网关服务的应用程序,它在微服务架构中扮演着流量的前门角色。主要功能包括以下几点: 路由转发:Zuul网关将外部请求转发到具体的微服务实例…

【Python常用函数】一文让你彻底掌握Python中的numpy.append函数

大数据时代的到来,使得很多工作都需要进行数据挖掘,从而发现更多有利的规律,或规避风险,或发现商业价值。而大数据分析的基础是学好编程语言。本文和你一起来探索Python中的append函数,让你以最短的时间明白这个函数的原理。也可以利用碎片化的时间巩固这个函数,让你在处…

高效管理文件方法:每4个文件前面加序号,4个文件后面又单独编号技巧

在日常工作中,文件管理是一项常见的任务。要更高效地管理文件,可以通过在每个文件前面加序号,并在每个序号对应的文件后面进行单独编号的方法来实现。这种方法有助于快速找到所需文件,也能提高工作效率。下面一起来看下云炫文件管…

2024出海潮,生态伙伴搭上华为HMS的“便车”?

作者 | 曾响铃 文 | 响铃说 回顾2023年,中国新能源车市场在加速内卷的同时,还诞生了一个 “超级物种”,那就是华为将车BU分拆。未来,华为智能汽车解决方案未来不仅会独立运营,还吸纳了庞大的盟友阵营,包括…

linux后台运行进程分类查看操作命令

例如需要查看所有运行的python程序进程: 执行的命令如下: ps -ef | grep python 解释: 在 UNIX 或类 UNIX 系统(如 Linux)中的作用是查找所有正在运行的与 Python 相关的进程。这个命令结合了两个常用的命令行工具…

R语言【base】——tempfile():返回一个字符串向量,这些字符串可以用作临时文件的名称

Package base version 4.2.0 Parameters tempfile(pattern "file", tmpdir tempdir(), fileext "") tempdir(check FALSE) 参数【pattern】:一个非空字符向量,给出名称的初始部分。 参数【tmpdir】:提供目录名称的…

修复HTTP动词篡改导致的认证旁路问题的方法

本文于2016年4月完成,发布在个人博客网站上。 诡异的问题 分析AppScan扫描报告的时候,发现报告里提示“HTTP动词篡改导致的认证旁路”,一个名字很长,很怪异的问题。咨询度娘没有获取到必要的信息,于是只好按照AppScan…

物理机与vm文件共享与传输的设置方法

今天跟各位小伙伴,分享一下物理机与vm虚拟机文件共享与传输的设置方法,以供大家参考! 一、物理机与虚拟机文件共享设置方法 第一步:先关闭虚拟机(客户机) 第二步:选择编辑虚拟机设置 第三步&am…

Nacos和Eureka的全面对比

学习目标: 了解Nacos和Eureka的基本概念和特点。理解Nacos和Eureka在服务注册与发现、配置管理、服务路由、负载均衡等方面的区别。掌握Nacos和Eureka的部署和使用方法。比较Nacos和Eureka在性能、可靠性、扩展性等方面的优劣。理解Nacos和Eureka在微服务架构中的应…

leetcode经典【双指针】例题

删除有序数组中的重复项: https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 解题思路: 首先注意数组是有序的,那么重复的元素一定会相邻。 注: 要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。 考…

【面试高频算法解析】算法练习2 回溯(Backtracking)

前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯(Backtracking&…

PyQT5安装配置测试打包教程

文章目录 PyQT5安装配置配置环境变量Pycharm配置Qt Designer和PyUIC 测试测试QT Designer设计的界面软件打包 PyQT5 安装 pip3 install PyQt5 pip3 install pyqt5-tools 配置 配置环境变量 添加xxx\Lib\site-packages\pyqt5_tools至环境变量 Pycharm配置Qt Designer和PyU…

深度解读《Java编程思想》:面向对象导论

深度解读《Java编程思想》:面向对象导论 前言: 欢迎来到本篇博客,我们将深入探讨经典之作《Java编程思想》中的面向对象导论。这本由Bruce Eckel所著的书籍深入浅出,为Java编程提供了一系列深刻的思考和实践经验。 1. Java 编程思想简介&a…

【leetcode】力扣算法之旋转图像【难度中等】

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 用例 输入: matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…

1.分组

#include<bits/stdc.h> using namespace std; int main() {unsigned long long a,b,c0,d,s0;cin>>a>>b;for(long long i1;i<a;i){cin>>d;cd;if(c>b){c0;s;}}cout<<s;return 0; }

Mac开发 app名称 如何国际化

在 macOS 应用程序中&#xff0c;您可以通过将应用程序的名称进行国际化来实现多语言支持。这样&#xff0c;应用程序的名称将根据用户的语言设置自动显示对应的翻译。以下是一种实现国际化应用程序名称的方法&#xff1a; 在 Xcode 中&#xff0c;导航到项目的根目录&#xff…

处cp社交类微信小程序前端开源(二)

在上一篇文章介绍如何用SpringBoot整合websocket实现在线聊天&#xff0c;这篇文章介绍如何将uniapp社交类前端源码打包部署微信小程序&#xff0c;和如何上线微信小程序&#xff0c;上线需要的资料&#xff0c;并且介绍我是如何获取用户&#xff0c;如何变现&#xff0c;现在的…

java网络文件地址url的转换为MultipartFile文件流

废话不多说&#xff0c;直接上代码 一、异常捕捉类 public class BusinessException extends RuntimeException {public BusinessException(String msg){super(msg);} }二、转换类 package com.example.answer_system.utils;import org.springframework.mock.web.MockMultipa…

第一个Flask项目(pycharm社区版)

本文章只作为个人笔记. 前言 第一个flask项目,打开debug模式,修改host,修改port. from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello world!# 1.debug模式 # 1.1 开启debug模式后,只要修改代码后保存,就会重新加载,不用手动重启项目 #…