Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 불공정성이 최소인 주어진 배열에서 길이 k의 배열을 찾는 프로그램

<시간/>

배열 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]
  • 나는 :=나는 + 1
  • 반환 m
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    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