Python程序:计算将所有值转换为相同值所需的运算次数?


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

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

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

  • vals := 对nums中唯一数字的列表进行排序

  • vtoi := 一个映射,所有值v作为键,其索引i作为值

  • 返回所有v在nums中的vtoi[v]之和

让我们看下面的实现,以便更好地理解

示例

 在线演示

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

更新于:2020年11月10日

浏览量:153

开启你的职业生涯

完成课程获得认证

开始学习
广告