정수 nums의 목록이 주어지면 다음 작업을 수행할 수 있습니다. nums에서 가장 큰 숫자를 선택하고 두 번째로 큰 숫자로 바꿉니다. 목록의 모든 정수를 동일하게 만드는 데 필요한 최소 작업 수를 반환합니다.
따라서 입력이 nums =[5, 9, 2]와 같으면 출력은 3이 됩니다. 먼저 9를 선택한 다음 5로 만들고, soarray는 [5, 5, 2], 5를 선택하고 2를 만듭니다. , [5, 2, 2], 다시 5를 선택하고 2, [2, 2, 2]로 변환합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다.
-
vals :=고유한 문자 목록을 숫자로 정렬
-
vtoi :=vals의 모든 값 v에 대한 맵을 키로, 인덱스 i를 값으로
-
모든 v에 대한 vtoi[v]의 합계를 숫자로 반환
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
예시
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