Giả sử chúng ta có một mảng A và một giá trị khác k. Chúng ta phải tạo một mảng arr có kích thước là k bu lấy các phần tử từ A và giảm thiểu sự không công bằng. Ở đây, sự không công bằng được tính theo công thức này -
(𝑚𝑎𝑥𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟) - (𝑚𝑖𝑛𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟)
Vì vậy, nếu đầu vào là A =[25, 120, 350, 150, 2500, 25, 35] và k =3, thì đầu ra sẽ là 10, vì chúng ta có thể lấy các phần tử [25, 25, 35] nên tối đa (arr) =35 và min (arr) =25. Vậy hiệu số của chúng là 10.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- i:=0
- sắp xếp danh sách A
- n:=kích thước của A
- m:=A [n-1]
- x:=0, y:=0
- while i
- nếu A [i + k-1] - A [i]
- m:=A [i + k-1] - A [i]
- nếu A [i + k-1] - A [i]
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
[25, 120, 350, 150, 2500, 25, 35]
Đầu ra
10