Python程式:查詢k次操作後最小可能最大值
假設我們有一個名為nums的數字列表和另一個值k。現在讓我們考慮一個操作,我們可以從列表中的任何元素中減去1。我們可以執行此操作k次。我們必須找到k次此類操作後列表中最小可能的最大值。
因此,如果輸入類似於nums = [3, 4, 6, 5] k = 6,則輸出將為3,因為我們可以將4減少一次,6減少三次,5減少兩次以得到[3,3,3,3]。
為了解決這個問題,我們將遵循以下步驟:
- 按降序排列數字
- i := 0
- curr := nums[0]
- 當k > 0時,執行:
- 當i < nums的大小且nums[i]與curr相同時,執行:
- i := i + 1
- 如果k >= i,則:
- k := k - i
- curr := curr - 1
- 否則:
- 返回curr
- 當i < nums的大小且nums[i]與curr相同時,執行:
- 返回curr
讓我們看下面的實現來更好地理解。
示例
class Solution: def solve(self, nums, k): nums.sort(reverse=True) i = 0 curr = nums[0] while k > 0: while i < len(nums) and nums[i] == curr: i += 1 if k >= i: k -= i curr -= 1 else: return curr return curr ob = Solution() nums = [3, 4, 6, 5] k = 6 print(ob.solve(nums, k))
輸入
[3, 4, 6, 5], 6
輸出
3
廣告