You are given an integer num. You will apply the following steps to numstwo times independently:
Pick a digit x (0 <= x <= 9).
Pick another digit y (0 <= y <= 9). Note y can be equal to x.
Replace all the occurrences of x in the decimal representation of num by y.
Let a and b be the two results from applying the operation to numindependently.
Return the max difference between a and b.
Note that the new integer (either a or b) must not have any leading zeros, and it must not be 0.
Example 1:
Input: num = 555
Output: 888
Explanation: The first time pick x = 5 and y = 9 and store the new integer in a.
The second time pick x = 5 and y = 1 and store the new integer in b.
We have now a = 999 and b = 111 and max difference = 888
Example 2:
Input: num = 9
Output: 8
Explanation: The first time pick x = 9 and y = 9 and store the new integer in a.
The second time pick x = 9 and y = 1 and store the new integer in b.
We have now a = 9 and b = 1 and max difference = 8
Constraints:
1 <= num <= 108
Solutions
Solution 1: Greedy
To obtain the maximum difference, we should take the maximum and minimum values, as this yields the largest difference.
Therefore, we first enumerate each digit in \(\textit{nums}\) from high to low. If a digit is not 9, we replace all occurrences of that digit with 9 to obtain the maximum integer \(a\).
Next, we enumerate each digit in \(\textit{nums}\) from high to low again. The first digit cannot be 0, so if the first digit is not 1, we replace it with 1; for non-leading digits that are different from the first digit, we replace them with 0 to obtain the minimum integer \(b\).
The answer is the difference \(a - b\).
The time complexity is \(O(\log \textit{num})\), and the space complexity is \(O(\log \textit{num})\), where \(\textit{nums}\) is the given integer.