สมมติว่าเรามีอาร์เรย์ A และอีกค่าหนึ่งคือ k เราต้องสร้างอาร์เรย์ arr ที่มีขนาด k bu รับองค์ประกอบจาก A และลดความไม่เป็นธรรมให้เหลือน้อยที่สุด สูตรนี้คำนวณความไม่เป็นธรรม -
(𝑚𝑎𝑥𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟) − (𝑚𝑖𝑛𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟)
ดังนั้น หากอินพุตเป็น A =[25, 120, 350, 150, 2500, 25, 35] และ k =3 ผลลัพธ์จะเป็น 10 เพราะเราสามารถหาองค์ประกอบ [25, 25, 35] ได้ ดังนั้นสูงสุด (arr) =35 และ min(arr) =25 ดังนั้นความแตกต่างคือ 10
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- i:=0
- เรียงลำดับรายการ A
- n :=ขนาดของ A
- m:=A[n-1]
- x:=0, y:=0
- ในขณะที่ฉัน
- ถ้า A[i+k-1] - A[i]
- m :=A[i+k-1] - A[i]
- ถ้า A[i+k-1] - A[i]
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(A, k): i=0 A.sort() n = len(A) m=A[n-1] x=0 y=0 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))
อินพุต
[25, 120, 350, 150, 2500, 25, 35]
ผลลัพธ์
10