首页 > 编程语言 >【教3妹学编程-算法题】移除后集合的最多元素数

【教3妹学编程-算法题】移除后集合的最多元素数

时间:2024-01-09 17:32:29浏览次数:38  
标签:int 编程 妹学 common 移除 n2 nums1 nums2

【教3妹学编程-算法题】移除后集合的最多元素数_java代码

3妹:好冷啊, 冻得瑟瑟发抖啦
2哥 : 这才哪跟哪,上海这几天温度算是高的啦。你看看哈尔滨,那才是冰城。
3妹:据说沈阳千名“搓澡大姨”支援哈尔滨?哈哈哈哈
2哥 : 就像今年的淄博烧烤,可能有炒作的成分
3妹:不不,是去年的了,今年已经24年啦。 2哥,你说哈尔滨最多能住多少人,这么多人涌入哈尔滨,能住的下嘛。
2哥:这个就不用担心啦,自然是住得下的。 说到最多住的人数,我们是不是又该做每日一题啦?刚好今天的题目是关于最多元素数的~

【教3妹学编程-算法题】移除后集合的最多元素数_Math_02

 1题目: 

给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们的长度都是偶数 n 。

你必须从 nums1 中移除 n / 2 个元素,同时从 nums2 中也移除 n / 2 个元素。移除之后,你将 nums1 和 nums2 中剩下的元素插入到集合 s 中。

返回集合 s可能的 最多 包含多少元素。

示例 1:

输入:nums1 = [1,2,1,2], nums2 = [1,1,1,1]
输出:2
解释:从 nums1 和 nums2 中移除两个 1 。移除后,数组变为 nums1 = [2,2] 和 nums2 = [1,1] 。因此,s = {1,2} 。
可以证明,在移除之后,集合 s 最多可以包含 2 个元素。
示例 2:

输入:nums1 = [1,2,3,4,5,6], nums2 = [2,3,2,3,2,3]
输出:5
解释:从 nums1 中移除 2、3 和 6 ,同时从 nums2 中移除两个 3 和一个 2 。移除后,数组变为 nums1 = [1,4,5] 和 nums2 = [2,3,2] 。因此,s = {1,2,3,4,5} 。
可以证明,在移除之后,集合 s 最多可以包含 5 个元素。
示例 3:

输入:nums1 = [1,1,2,2,3,3], nums2 = [4,4,5,5,6,6]
输出:6
解释:从 nums1 中移除 1、2 和 3 ,同时从 nums2 中移除 4、5 和 6 。移除后,数组变为 nums1 = [1,2,3] 和 nums2 = [4,5,6] 。因此,s = {1,2,3,4,5,6} 。
可以证明,在移除之后,集合 s 最多可以包含 6 个元素。

提示:

n == nums1.length == nums2.length
1 <= n <= 2 * 10^4
n是偶数。
1 <= nums1[i], nums2[i] <= 10^9

 2思路: 

【教3妹学编程-算法题】移除后集合的最多元素数_Math_03

先移除每个数组中的重复元素,再考虑从剩下的数中移除元素。
详解见代码:

 3java代码: 

class Solution {
    public int maximumSetSize(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>();
        for (int x : nums1) {
            set1.add(x);
        }
        Set<Integer> set2 = new HashSet<>();
        for (int x : nums2) {
            set2.add(x);
        }
        int common = 0;
        for (int x : set1) {
            if (set2.contains(x)) {
                common++;
            }
        }


        int n1 = set1.size();
        int n2 = set2.size();
        int ans = n1 + n2 - common;


        int m = nums1.length / 2;
        if (n1 > m) {
            int mn = Math.min(n1 - m, common);
            ans -= n1 - mn - m;
            common -= mn;
        }


        if (n2 > m) {
            n2 -= Math.min(n2 - m, common);
            ans -= n2 - m;
        }


        return ans;
    }
}

标签:int,编程,妹学,common,移除,n2,nums1,nums2
From: https://blog.51cto.com/u_6813689/9163819

相关文章

  • 51单片机中断系统编程
    一.外部中断1.编程思想中断准备:中断初始化函数打开中断开关,选择中断传输方式中断处理:为了便于观察,让我们知道单片机进入中断处理函数,在这里我们选择打开流水灯电路搭建:由于P3^3引脚不便直接接地,我们把P3^3和P3^7连接起来,用P3^7来控制P3^3的电平变化2.实践代码#include<reg52.h>#......
  • Java多线程编程中的异常处理策略
    第1章:引言大家好,我是小黑,咱们今天聊聊异常处理。想必大家在写代码的时候都遇到过各种各样的异常吧?有时候,一个小小的异常如果处理不当,就可能导致整个程序崩溃。特别是在多线程环境下,异常处理就像是在拆雷,稍不留神,程序就可能“炸”了。为啥多线程编程中的异常处理这么重要呢?咱们......
  • python 移除元素 多种解法
    使用列表推导式:numbers=[1,2,3,4,5]removed_number=3numbers=[xforxinnumbersifx!=removed_number]print(numbers)#输出:[1,2,4,5]使用filter()函数:numbers=[1,2,3,4,5]removed_number=3numbers=list(filter(lambdax:x!=removed_numbe......
  • Linux shell编程学习笔记38:history命令
    目录0 前言1 history命令的功能、格式和退出状态1.1 history命令的功能1.2 history命令的格式1.3退出状态2 命令应用实例2.1 history:显示命令历史列表2.2history-a:将当前会话的命令行历史追加到历史文件~/.bash_history中2.3history-c:删除所有条目从而清空历史列表2.4 ......
  • oracle 9i&10g编程艺术-读书笔记2
    配置Statspack安装Statspack需要用internal身份登陆,或者拥有SYSDBA(connect/assysdba)权限的用户登陆。需要在本地安装或者通过telnet登陆到服务器。selectinstance_name,host_name,version,startup_timefromv$instance;检查数据文件路径及磁盘空间,以决定创建数据文件的位置:......
  • 【教3妹学编程-算法题】对角线最长的矩形的面积
    3妹:好冷啊,冻得瑟瑟发抖啦2哥 :这才哪跟哪,上海这几天温度算是高的啦。你看看哈尔滨,那才是冰城。3妹:据说沈阳千名“搓澡大姨”支援哈尔滨?哈哈哈哈2哥 :就像今年的淄博烧烤,可能有炒作的成分3妹:不不,是去年的了,今年已经24年啦。2哥,你说哈尔滨的面积是多少,这么多人涌入哈尔滨,能住的......
  • Java 的 3 种网络编程的I/O 模型
     在Java的软件设计开发中,通信架构不可避免,我们在进行不同系统或者不同进程之间的数据交互,或者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/O通信(BIO),随着......
  • 【教3妹学编程-算法题】赎金信
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥 :3妹,什么事呀这么开森。3妹:2哥你看今天的天气多好啊,最近一周都是大晴天,艳阳高照2哥:是啊,天气不冷不热的,很适合生活3妹:据说南方的小土豆都跑到北方滑雪了,哈哈哈哈2哥:泼水成冰好玩是好玩,但是一定要注意防寒哦,看新闻都......
  • “华为杯”杭州电子科技大学2023新生编程大赛 1005
    树-HDU7406$xordist(i,j)=xordist(i,k)\oplusxordist(k,j)$在数轴和树上都是成立的那么原式变成$\sum_{i=l}^{r}xordist(i,k)\oplusxordist(k,j)$这里k指定为1号点就变成了一个很简单的拆位考虑贡献的问题了#include<bits/stdc++.h>usingnamespacestd;#de......
  • 书籍推荐-《机器人编程:使用树莓派3和Python构建和控制自主机器人》
    以下内容来自公众号【一点人工一点智能】编辑:东岸因为@一点人工一点智能书籍:LearnRoboticsProgramming:BuildandcontrolautonomousrobotsusingRaspberryPi3andPython作者:DannyStaple出版:PacktPublishing01书籍介绍我们生活在一个最复杂或重复的任务都是自动化......