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
- 如果 A[i+k-1] - A[i] < m,則
- 返回 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP