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次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.