每日一题:LeetCode-10037. 移除后集合的最多元素数
刷题使我快乐,满脸开心.jpg
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-size-of-a-set-after-removals/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目
给你两个下标从 0
开始的整数数组 nums1
和 nums2
,它们的长度都是偶数 n
。
你必须从 nums1
中移除 n / 2
个元素,同时从 nums2
中也移除 n / 2
个元素。移除之后,你将 nums1
和 nums2
中剩下的元素插入到集合 s
中。
返回集合 s
可能的 最多
包含多少元素。
示例 1:
示例 2:
示例 3:
提示:
n == nums1.length == nums2.length
1 <= n <= 2 * 104
n
是偶数。1 <= nums1[i], nums2[i] <= 109
思路
贪心的思维不用多说,大家都能想到。
我一开始是正向去除数据的思路,然后也没走对路子,陷入了一个牛角尖没能出来。那干脆换了方向,我不想怎么去除数据,转头去想着怎么选择数据。
问题就变成了:
在两个数组中分别拿出 n/2 个数字,求拿出不同数字的最大值。
这么想的话,问题就拆解成三个部分:
从
nums1
中拿出它独有的数字,最多n/2
从
nums2
中拿出它独有的数字,最多n/2
如果存在某个数组中独有数字不足
n/2
,那就从共有的数字
中拿
前两个很容易算出来,第三个值稍微多了一个逻辑
n/2 - nums1拿出独有数字数 + n/2 - nums2拿出独有数字数
。同样有个上限,那就是
共有数字的个数
代码基本已经出来了。老样子,细节在代码注释
代码
版权声明: 本文为 InfoQ 作者【半亩房顶】的原创文章。
原文链接:【http://xie.infoq.cn/article/5318a365c4f3a96e1964e94dc】。文章转载请联系作者。
评论