给定一个整数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