Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm mảng có độ dài k từ mảng đã cho có độ không công bằng là nhỏ nhất trong python

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]
  • i:=i + 1
  • trả lại m
  • 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