비어 있지 않은 정수 배열이 있다고 가정하고 모든 배열 요소를 동일하게 만드는 데 필요한 최소 이동 수를 찾아야 합니다. 여기서 이동은 선택한 요소를 증가 또는 감소시키는 것입니다. 따라서 배열이 [1, 2, 3]과 같을 때 1이 2로 증가하고 3이 2로 감소하므로 출력은 2가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 배열 번호 정렬
- 카운터를 0으로 설정
- 숫자 단위로 i에 대해 다음을 수행합니다.
- 카운터 :=카운터 + 절대값 (i – nums[숫자의 길이 / 2])
- 반품 카운터
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution: def minMoves2(self, nums): nums.sort() counter = 0 for i in nums: counter += abs(i-nums[len(nums)//2]) return counter ob1 = Solution() print(ob1.minMoves2([2,5,3,4]))
입력
[2,5,3,4]
출력
4