Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình đếm số lượng hoạt động cần thiết để chuyển đổi tất cả các giá trị thành giống nhau trong Python?

Đưa ra danh sách các số nguyên num, bạn có thể thực hiện thao tác sau:chọn các num numberin lớn nhất và biến nó thành số lớn thứ hai. Trả về số lượng phép toán tối thiểu cần thiết để làm cho tất cả các số nguyên giống nhau trong danh sách.

Vì vậy, nếu đầu vào là nums =[5, 9, 2], thì đầu ra sẽ là 3, vì chọn 9 trước, sau đó chọn nó là 5, soarray là [5, 5, 2], sau đó chọn 5 và chọn 2 , [5, 2, 2], lại chọn 5 và chuyển thành 2, [2, 2, 2].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau

  • vals:=sắp xếp danh sách các ký tự duy nhất theo nums

  • vtoi:=một bản đồ cho tất cả các giá trị v trong vals làm khóa và chỉ mục i của chúng là giá trị

  • trả về tổng của vtoi [v] cho tất cả v trong nums

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn

Ví dụ

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))

Đầu vào

[5, 9, 2]

Đầu ra

3