একটি nums নামক অ্যারে দেওয়া আছে। এক মুভে আমরা অ্যারের যেকোনো একটি উপাদানকে যেকোনো মানে পরিবর্তন করতে পারি। আমাদের কাজ হলো সর্বোচ্চ ৩টি মুভ সম্পাদন করার পর nums-এর সর্বোচ্চ এবং সর্বনিম্ন মানের মধ্যে ন্যূনতম পার্থক্য বের করা।
যেমন, nums = [3,7,2,12,16] হলে আউটপুট হবে ১ কারণ আমরা অ্যারেটিকে [1,1,0,1,1] বানাতে পারি, যেখানে সর্বোচ্চ ১ এবং সর্বনিম্ন ০, তাই পার্থক্য ১।
সমাধানের ধাপসমূহ
- যদি nums-এর আকার ≤ 4 হয়, তবে ০ ফেরত দিন।
- nums সর্ট করুন।
- ans := অসীম (infinity)
- i = 0 থেকে ৩ পর্যন্ত লুপ চালান:
- mi := nums[i]
- ma := nums[nums-এর দৈর্ঘ্য - (3 - i + 1)]
- ans := min(ma - mi, ans)
- ans ফেরত দিন।
উদাহরণ
def solve(nums):
if len(nums) <= 4:
return 0
nums.sort()
ans = float("inf")
for i in range(4):
mi = nums[i]
ma = nums[-(3 - i + 1)]
ans = min(ma - mi, ans)
return ans
nums = [3,7,2,12,16]
print(solve(nums))
ইনপুট
[3,7,2,12,16]
আউটপুট
1