ออปปอเรชัน: เลือกค่าสูงสุดในลิสต์ แล้วเปลี่ยนเป็นค่าที่สองมากที่สุด หาจำนวนออปปอเรชันน้อยที่สุดให้ทุกค่าเท่ากัน
ตัวอย่าง: nums = [5, 9, 2] → 3 ครั้ง (9→5, 5→2, 5→2)
สังเกต
แต่ละค่าต้อง "ลดระดับ" ลงมาจนถึงค่าต่ำสุด จำนวนครั้ง = index ของค่านั้นในลิสต์ค่าที่ไม่ซ้ำเรียงน้อยไปมาก
ขั้นตอน
vals = sorted(set(nums))ค่าที่ไม่ซ้ำเรียงน้อยไปมากvtoi = {v: i for i, v in enumerate(vals)}map ค่า → index- ผลรวม
vtoi[v]สำหรับทุก 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)) # 3
อินพุต
[5, 9, 2]
เอาต์พุต
3