배열 A와 다른 값 k가 있다고 가정합니다. A의 요소를 가져와서 크기가 k bu인 배열 arr을 형성하고 불공정성을 최소화해야 합니다. 여기서 불공정성은 다음 공식으로 계산됩니다 -
(𝑚𝑎𝑥𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟) − (𝑚𝑖𝑛𝑖𝑚𝑢𝑚 𝑚𝑎
따라서 입력이 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