You are given an array nums
of distinct positive integers. You need to sort the array in increasing order based on the sum of the digits of each number. If two numbers have the same digit sum, the smaller number appears first in the sorted order.
Return the minimum number of swaps required to rearrange nums
into this sorted order.
A swap is defined as exchanging the values at two distinct positions in the array.
Example 1:
Input: nums = [37,100]
Output: 1
Explanation:
[3 + 7 = 10, 1 + 0 + 0 = 1] → [10, 1]
[100, 37]
. Swap 37
with 100
to obtain the sorted order.nums
is 1.Example 2:
Input: nums = [22,14,33,7]
Output: 0
Explanation:
[2 + 2 = 4, 1 + 4 = 5, 3 + 3 = 6, 7 = 7] → [4, 5, 6, 7]
[22, 14, 33, 7]
. The array is already sorted.nums
is 0.Example 3:
Input: nums = [18,43,34,16]
Output: 2
Explanation:
[1 + 8 = 9, 4 + 3 = 7, 3 + 4 = 7, 1 + 6 = 7] → [9, 7, 7, 7]
[16, 34, 43, 18]
. Swap 18
with 16
, and swap 43
with 34
to obtain the sorted order.nums
is 2.
Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 109
nums
consists of distinct positive integers.