Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 모든 값을 동일하게 변환하는 데 필요한 작업 수를 계산하는 프로그램은 무엇입니까?

<시간/>

정수 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