使用Python编写的查找在三次移动中最小差异的最大值和最小值的程序

使用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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程