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