Class Solution
-
- All Implemented Interfaces:
public final class Solution3551 - Minimum Swaps to Sort by Digit Sum.
Medium
You are given an array
numsof 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
numsinto 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:
Compute the digit sum for each integer:
[3 + 7 = 10, 1 + 0 + 0 = 1] → [10, 1]Sort the integers based on digit sum:
[100, 37]. Swap37with100to obtain the sorted order.Thus, the minimum number of swaps required to rearrange
numsis 1.
Example 2:
Input: nums = 22,14,33,7
Output: 0
Explanation:
Compute the digit sum for each integer:
[2 + 2 = 4, 1 + 4 = 5, 3 + 3 = 6, 7 = 7] → [4, 5, 6, 7]Sort the integers based on digit sum:
[22, 14, 33, 7]. The array is already sorted.Thus, the minimum number of swaps required to rearrange
numsis 0.
Example 3:
Input: nums = 18,43,34,16
Output: 2
Explanation:
Compute the digit sum for each integer:
[1 + 8 = 9, 4 + 3 = 7, 3 + 4 = 7, 1 + 6 = 7] → [9, 7, 7, 7]Sort the integers based on digit sum:
[16, 34, 43, 18]. Swap18with16, and swap43with34to obtain the sorted order.Thus, the minimum number of swaps required to rearrange
numsis 2.
Constraints:
<code>1 <= nums.length <= 10<sup>5</sup></code>
<code>1 <= numsi<= 10<sup>9</sup></code>
numsconsists of distinct positive integers.
-
-
Constructor Summary
Constructors Constructor Description Solution()
-