使用Python编写的查找在三次移动中最小差异的最大值和最小值的程序
假设我们有一个名为nums的数组。我们可以在一次移动中将此数组中的一个元素更改为任何值。我们必须找到nums的最大和最小值之间的最小差异,最多执行3次移动。
因此,如果输入为nums =[3,7,2,12,16],则输出将为1,因为我们可以将给定的数组更改为[1,1,0,1,1],因此最大值为1,最小值为0,因此差异为1。
要解决此问题,我们将执行以下步骤:
- 如果nums的大小<= 4,则
- 返回0
- 对列表nums进行排序
-
ans:=无限大
-
对于i在0到3之间,执行以下操作
- mi:=nums[i]
-
ma:=nums[length of nums -(3-i+1)]
-
ans:=ma-mi和ans的最小值
-
返回ans
以下是实现的详细说明-
示例
def solve(nums):
if len(nums) <= 4:
return 0
nums.sort()
ans = float("inf")
for i in range(4):
mi = nums[i]
ma = nums[-(3-i+1)]
ans = min(ma-mi,ans)
return ans
nums = [3,7,2,12,16]
print(solve(nums))
输入
[3,7,2,12,16]
输出
1