Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

นับจำนวนออปปอเรชันทำให้ค่าทั้งหมดในลิสต์เท่ากันใน Python

ออปปอเรชัน: เลือกค่าสูงสุดในลิสต์ แล้วเปลี่ยนเป็นค่าที่สองมากที่สุด หาจำนวนออปปอเรชันน้อยที่สุดให้ทุกค่าเท่ากัน

ตัวอย่าง: nums = [5, 9, 2] → 3 ครั้ง (9→5, 5→2, 5→2)

สังเกต

แต่ละค่าต้อง "ลดระดับ" ลงมาจนถึงค่าต่ำสุด จำนวนครั้ง = index ของค่านั้นในลิสต์ค่าที่ไม่ซ้ำเรียงน้อยไปมาก

ขั้นตอน

  1. vals = sorted(set(nums)) ค่าที่ไม่ซ้ำเรียงน้อยไปมาก
  2. vtoi = {v: i for i, v in enumerate(vals)} map ค่า → index
  3. ผลรวม 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