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