用 Python 编写程序,从给定数组中找出长度为 k 且不公平性最小的数组
pythonserver side programmingprogramming更新于 2025/12/18 5:32:17
假设我们有一个数组 A 和另一个值 k。我们必须从 A 中取出元素,形成一个大小为 k 的数组 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

