মনে করুন nums নামে একটি সংখ্যার লিস্ট এবং k নামে একটি মান আছে। nums থেকে k উপাদান সরালে (maximum of nums - minimum of nums)-এর ন্যূনতম মান বের করুন।
ইনপুট nums = [4, 10, 3, 2, 8, 9], k = 3 হলে আউটপুট হবে ২, কারণ 10, 8, 9 সরালে সর্বাধিক ৪, ন্যূনতম ২, পার্থক্য ২।
সমাধানের ধাপসমূহ:
- nums লিস্ট সর্ট করুন
- p := len(nums) - k
- m := nums[-1] - nums[0]
- i = 0 থেকে len(nums) - p পর্যন্ত লুপ:
- যদি nums[i + p - 1] - nums[i] < m, তবে m := nums[i + p - 1] - nums[i]
- m ফেরত দিন
উদাহরণ
বাস্তবায়ন:
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))
ইনপুট
[10, 4, 3, 2, 9, 8], 3
আউটপুট
2