Python程序:将数字列表拆分成两个部分,使中位数的绝对差最小


假设我们有一个名为nums的数字列表,我们需要将其分成两个大小相同的子列表,使得每个列表的中位数之间的绝对差尽可能小,并找到这个差值。请注意,此处nums的长度/2将为奇数。

例如,如果输入为[2, 10, 8, 5, 4, 7],则输出为2,因为我们可以创建两个列表[2,5,10]和[4,7,8],然后中位数分别为5和7,它们的差值为2。

为了解决这个问题,我们将遵循以下步骤:

  • 对列表nums进行排序
  • m := nums大小/2的商
  • 返回|nums[m] - nums[m-1]|

让我们来看下面的实现,以便更好地理解:

示例

 在线演示

class Solution:
   def solve(self, nums):
      nums.sort()
      m = len(nums)//2
      return abs(nums[m] - nums[m-1])
ob = Solution()
print(ob.solve([2, 10, 8, 5, 4, 7]))

输入

[2, 10, 8, 5, 4, 7]

输出

2

更新于: 2020年10月6日

126次浏览

开启你的职业生涯

通过完成课程获得认证

立即开始
广告