Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình chia danh sách thành hai phần có chênh lệch trung vị nhỏ nhất trong Python

Cho danh sách nums, chia thành hai phần bằng nhau sao cho độ chênh lệch tuyệt đối giữa hai trung vị là nhỏ nhất. Độ dài nums chia 2 là số lẻ.

Ví dụ

Đầu vào: [2, 10, 8, 5, 4, 7].
Đầu ra: 2 (chia thành [2,5,10] và [4,7,8], trung vị 5 và 7, chênh 2).

Thuật toán

  1. Sắp xếp nums.
  2. m = len(nums) // 2.
  3. Trả về abs(nums[m] - nums[m-1]).

Mã nguồn Python

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]))

Đầu vào / Đầu ra

Input: [2, 10, 8, 5, 4, 7]
Output: 2