একটি অ্যারে A এবং মান k দেওয়া আছে। A-থেকে k আকারের সাবঅ্যারে বানাতে হবে যাতে অনফেয়ারনেস = max(arr) - min(arr) মিনিমাম হয়।
উদাহরণ
A = [25, 120, 350, 150, 2500, 25, 35], k = 3 → আউটপুট: 10
সাবঅ্যারে: [25, 25, 35] → max=35, min=25, diff=10
এলগরিদম (স্লাইডিং উইন্ডো অন সোর্টেড অ্যারে)
Aসর্ট করুন।i = 0থেকেn-kপর্যন্ত:m = min(m, A[i+k-1] - A[i])
mরিটার্ন করুন।
পাইথন কোড
def solve(A, k):
i = 0
A.sort()
n = len(A)
m = A[n-1]
while i < n - k:
if A[i+k-1] - A[i] < m:
m = A[i+k-1] - A[i]
i += 1
return m
A = [25, 120, 350, 150, 2500, 25, 35]
k = 3
print(solve(A, k)) # আউটপুট: 10
ইনপুট / আউটপুট
[25, 120, 350, 150, 2500, 25, 35], 3 10