在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