Python程式:從給定陣列中查詢長度為k且不公平性最小的陣列


假設我們有一個數組A和另一個值k。我們必須從A中選取元素組成一個大小為k的陣列arr,並使不公平性最小化。這裡的不公平性由以下公式計算:

(arr的最大值) - (arr的最小值)

因此,如果輸入像A = [25, 120, 350, 150, 2500, 25, 35] 和 k = 3,則輸出將為10,因為我們可以選擇元素[25, 25, 35],所以max(arr) = 35,min(arr) = 25。它們的差是10。

為了解決這個問題,我們將遵循以下步驟:

  • i := 0
  • 對列表A進行排序
  • n := A的大小
  • m := A[n-1]
  • x := 0, y := 0
  • 當 i < n-k 時,執行以下操作:
    • 如果 A[i+k-1] - A[i] < m,則
      • m := A[i+k-1] - A[i]
    • i := 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

更新於:2021年10月11日

500 次檢視

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.