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
廣告