用Python找到给定数组中长度为k的数组,其不公平程度最小

用Python找到给定数组中长度为k的数组,其不公平程度最小

假设我们有一个数组A和另一个值k。我们必须形成一个大小为k的数组arr,从A中取出元素并最小化不公平。这里的不公平性通过以下公式计算 –

(max(arr) – min(arr)) – (AVERAGE(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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程