Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm biên độ tối thiểu sau khi xóa K phần tử trong Python

Giả sử chúng ta có một dãy số được gọi là num và có một giá trị khác là k. Nếu chúng ta xóa k phần tử khỏi nums, thì hãy tìm giá trị tối thiểu (tối đa là nums - tối thiểu nums).

Vì vậy, nếu đầu vào là nums =[4, 10, 3, 2, 8, 9] k =3, thì đầu ra sẽ là 2, bởi vì nếu chúng ta loại bỏ 10, 8 và 9 thì tối đa là 4, tối thiểu là 2 vì vậy sự khác biệt là 2.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • sắp xếp các số trong danh sách

  • p:=kích thước của nums - k

  • m:=(phần tử cuối cùng của nums) - nums [0]

  • đối với tôi trong phạm vi 0 đến kích thước của nums - p, thực hiện

    • nếu nums [i + p - 1] - nums [i]

      • m:=nums [i + p - 1] - nums [i]

  • trả lại m

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn

def solve(nums, k):
   nums = sorted(nums)
   p = len(nums) - k
   m = nums[-1] - nums[0]
   for i in range(0, len(nums) - p + 1):
      if nums[i + p - 1] - nums[i] < m:
         m = nums[i + p - 1] - nums[i]
   return m

nums = [10, 4, 3, 2, 9, 8]
k = 3
print(solve(nums, k))

Đầu vào

[10, 4, 3, 2, 9, 8], 3

Đầu ra

2