LeetCode 题解工作台

移除后集合的最多元素数

给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们的长度都是偶数 n 。 你必须从 nums1 中移除 n / 2 个元素,同时从 nums2 中也移除 n / 2 个元素。移除之后,你将 nums1 和 nums2 中剩下的元素插入到集合 s 中。 返回集合 s 可能的 最多 …

category

3

题型

code_blocks

5

代码语言

hub

3

相关题

当前训练重点

中等 · 数组·哈希·扫描

bolt

答案摘要

class Solution: def maximumSetSize(self, nums1: List[int], nums2: List[int]) -> int:

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 数组·哈希·扫描 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

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

你必须从 nums1 中移除 n / 2 个元素,同时从 nums2 中也移除 n / 2 个元素。移除之后,你将 nums1nums2 中剩下的元素插入到集合 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 * 104
  • n是偶数。
  • 1 <= nums1[i], nums2[i] <= 109
lightbulb

解题思路

方法一

1
2
3
4
5
6
7
8
9
class Solution:
    def maximumSetSize(self, nums1: List[int], nums2: List[int]) -> int:
        s1 = set(nums1)
        s2 = set(nums2)
        n = len(nums1)
        a = min(len(s1 - s2), n // 2)
        b = min(len(s2 - s1), n // 2)
        return min(a + b + len(s1 & s2), n)
speed

复杂度分析

指标
时间complexity is O(n) due to single passes over arrays for counting and removal using hash tables. Space complexity is O(n) for storing frequencies and the resulting set.
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    The candidate immediately counts frequencies to identify high-occurrence elements.

  • question_mark

    Candidate uses a greedy strategy to remove duplicates rather than random selection.

  • question_mark

    They combine remaining elements into a set and justify that this yields maximum size.

warning

常见陷阱

外企场景
  • error

    Removing elements without considering frequency can reduce unique set size.

  • error

    Miscounting n / 2 removals leads to incorrect final set size.

  • error

    Failing to use hash lookup may result in duplicate elements inflating perceived set size.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Change removal strategy to minimize sum instead of maximizing set size.

  • arrow_right_alt

    Arrays contain negative numbers and zeros affecting hash table keys.

  • arrow_right_alt

    Arrays have different lengths, requiring adjustment to removal count and greedy logic.

help

常见问题

外企场景

移除后集合的最多元素数题解:数组·哈希·扫描 | LeetCode #3002 中等