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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告