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

โปรแกรมนับจำนวนการดำเนินการที่จำเป็นในการแปลงค่าทั้งหมดเป็นค่าเดียวกันใน Python หรือไม่


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

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5, 9, 2] ผลลัพธ์จะเป็น 3 เท่ากับเลือก 9 ก่อน จากนั้นจึงเปลี่ยนเป็น 5, ทะยานเป็น [5, 5, 2] แล้วเลือก 5 ให้เป็น 2 , [5, 2, 2] เลือก 5 อีกครั้งแล้วแปลงเป็น 2, [2, 2, 2]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้

  • vals :=เรียงลำดับรายการของอักขระที่ไม่ซ้ำใน nums

  • vtoi :=แผนที่สำหรับค่าทั้งหมด v ใน vals เป็นคีย์และดัชนี i เป็นค่า

  • ส่งกลับผลรวมของ 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))

อินพุต

[5, 9, 2]

ผลลัพธ์

3