Đư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