LeetCode 题解工作台

中位数之和的最大值

给你一个整数数组 nums ,其长度可以被 3 整除。 你需要通过多次操作将数组清空。在每一步操作中,你可以从数组中选择任意三个元素,计算它们的 中位数 ,并将这三个元素从数组中移除。 奇数长度数组的 中位数 定义为数组按非递减顺序排序后位于中间的元素。 返回通过所有操作得到的 中位数之和的最大值 …

category

0

题型

code_blocks

5

代码语言

hub

0

相关题

当前训练重点

中等 · maximum·median·求和·of·subsequences·of·size·3·core·interview·pattern

bolt

答案摘要

为了使得中位数之和最大,我们需要尽可能选择较大的元素作为中位数。由于每次操作只能选择三个元素,因此我们可以将数组排序后,从下标 $n / 3$ 元素开始,每两个元素选择一个小的,直到数组末尾。这样可以确保我们选择的中位数是最大的。 时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 是数组 的长度。

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 maximum·median·求和·of·subsequences·of·size·3·core·interview·pattern 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

给你一个整数数组 nums,其长度可以被 3 整除。

你需要通过多次操作将数组清空。在每一步操作中,你可以从数组中选择任意三个元素,计算它们的 中位数 ,并将这三个元素从数组中移除。

奇数长度数组的 中位数 定义为数组按非递减顺序排序后位于中间的元素。

返回通过所有操作得到的 中位数之和的最大值 

 

示例 1:

输入: nums = [2,1,3,2,1,3]

输出: 5

解释:

  • 第一步,选择下标为 2、4 和 5 的元素,它们的中位数是 3。移除这些元素后,nums 变为 [2, 1, 2]
  • 第二步,选择下标为 0、1 和 2 的元素,它们的中位数是 2。移除这些元素后,nums 变为空数组。

因此,中位数之和为 3 + 2 = 5

示例 2:

输入: nums = [1,1,10,10,10,10]

输出: 20

解释:

  • 第一步,选择下标为 0、2 和 3 的元素,它们的中位数是 10。移除这些元素后,nums 变为 [1, 10, 10]
  • 第二步,选择下标为 0、1 和 2 的元素,它们的中位数是 10。移除这些元素后,nums 变为空数组。

因此,中位数之和为 10 + 10 = 20

 

提示:

  • 1 <= nums.length <= 5 * 105
  • nums.length % 3 == 0
  • 1 <= nums[i] <= 109
lightbulb

解题思路

方法一:贪心 + 排序

为了使得中位数之和最大,我们需要尽可能选择较大的元素作为中位数。由于每次操作只能选择三个元素,因此我们可以将数组排序后,从下标 n/3n / 3 元素开始,每两个元素选择一个小的,直到数组末尾。这样可以确保我们选择的中位数是最大的。

时间复杂度 O(n×logn)O(n \times \log n),空间复杂度 O(logn)O(\log n)。其中 nn 是数组 nums\textit{nums} 的长度。

1
2
3
4
5
class Solution:
    def maximumMedianSum(self, nums: List[int]) -> int:
        nums.sort()
        return sum(nums[len(nums) // 3 :: 2])
speed

复杂度分析

指标
时间Depends on the final approach
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    Understanding of sorting and its impact on selecting medians

  • question_mark

    Ability to apply greedy strategies for optimization

  • question_mark

    Familiarity with common patterns in subsequence problems

warning

常见陷阱

外企场景
  • error

    Incorrect median calculation for subsequences

  • error

    Not sorting the array before selection

  • error

    Failing to use a greedy approach to maximize the sum of medians

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Using a different subsequence size

  • arrow_right_alt

    Minimizing the sum of medians instead of maximizing

  • arrow_right_alt

    Allowing duplicates in the array for varied subsequence selections

help

常见问题

外企场景

中位数之和的最大值题解:maximum·median·求和·of·su… | LeetCode #3627 中等