使用 Python 查詢三步操作後最大值和最小值之間最小差值的程式


假設我們有一個名為 nums 的陣列。我們可以在一步操作中將此陣列中的一個元素更改為任何值。我們必須找到在最多執行 3 次操作後 nums 的最大值和最小值之間的最小差值。

因此,如果輸入類似於 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[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

更新於: 2021年5月29日

585 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.