程序计数在Python中将所有值转换为相同值所需的操作数吗?

给定一个整数nums列表,您可以执行以下操作:选择以nums为单位的最大数字,然后将其变为第二大数字。返回使列表中的所有整数相同所需的最小操作数。

因此,如果输入类似于nums = [5,9,2],则输出将为3,首先选择9,然后将其设为5,则数组为[5,5,2],然后选择5并使其2,[5,2,2],再次选择5并转换为2,[2,2,2]。

为了解决这个问题,我们将按照以下步骤

  • vals:=对以数字为单位的唯一字符列表进行排序

  • vtoi:=以vals中的所有值v为键并将其索引i为值的映射

  • 返回所有v的vtoi [v]的总和(以nums为单位)

让我们看一下下面的实现以获得更好的理解

示例

class Solution:
   def solve(self, nums):
      vals = sorted(set(nums))
      vtoi = {v: i for i, v in enumerate(vals)}
      return sum(vtoi[v] for v in nums)

ob = Solution()nums = [5, 9, 2]
print(ob.solve(nums))

输入值

[5, 9, 2]

输出结果

3
猜你喜欢