Python程式:刪除K個元素後找到最小振幅
假設我們有一個稱為nums的數字列表,還有一個值k。如果我們從nums中刪除k個元素,則找到(nums的最大值 - nums的最小值)的最小值。
因此,如果輸入類似於nums = [4, 10, 3, 2, 8, 9] k = 3,則輸出將為2,因為如果我們刪除10、8和9,則最大值為4,最小值為2,因此差值為2。
為了解決這個問題,我們將遵循以下步驟:
對列表nums進行排序
p := nums的大小 - k
m := (nums的最後一個元素) - nums[0]
對於範圍從0到nums的大小 - p的i,執行以下操作:
如果nums[i + p - 1] - nums[i] < m,則
m := nums[i + p - 1] - nums[i]
返回m
示例
讓我們看看以下實現,以便更好地理解
def solve(nums, k):
nums = sorted(nums)
p = len(nums) - k
m = nums[-1] - nums[0]
for i in range(0, len(nums) - p + 1):
if nums[i + p - 1] - nums[i] < m:
m = nums[i + p - 1] - nums[i]
return m
nums = [10, 4, 3, 2, 9, 8]
k = 3
print(solve(nums, k))輸入
[10, 4, 3, 2, 9, 8], 3
輸出
2
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP