Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหา Array ความยาว k ที่ Unfairness น้อยที่สุดใน Python

ให้อาร์เรย์ A และ k เลือก k ตัวจาก A สร้าง arr ให้ max(arr) - min(arr) น้อยที่สุด (Unfairness)

ตัวอย่าง: A=[25,120,350,150,2500,25,35], k=3 → 10 (เลือก [25,25,35] → 35-25=10)

ขั้นตอน (Sort + Sliding Window)

  1. เรียง A
  2. Sliding Window ขนาด k หา min(A[i+k-1] - A[i])

ตัวอย่างโค้ด

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))  # Output: 10

อินพุต

[25, 120, 350, 150, 2500, 25, 35]

เอาต์พุต

10