Talentd
FleetCode

1505. Minimum Possible Integer After at Most K Adjacent Swaps On Digits

Hard41.8% acceptance1 company

You are given a string num representing the digits of a very large integer and an integer k. You are allowed to swap any two adjacent digits of the integer at most k times.

Return the minimum integer you can obtain also as a string.

Example 1:

Input: num = "4321", k = 4
Output: "1342"
Explanation: The steps to obtain the minimum integer from 4321 with 4 adjacent swaps are shown.

Example 2:

Input: num = "100", k = 1
Output: "010"
Explanation: It's ok for the output to have leading zeros, but the input is guaranteed not to have any leading zeros.

Example 3:

Input: num = "36789", k = 1000
Output: "36789"
Explanation: We can keep the number without any swaps.

Constraints:

  • 1 <= num.length <= 3 * 104
  • num consists of only digits and does not contain leading zeros.
  • 1 <= k <= 109

Asked at 1 company

Hints open one at a time

Hint 1
We want to make the smaller digits the most significant digits in the number.
Hint 2
For each index i, check the smallest digit in a window of size k and append it to the answer. Update the indices of all digits in this range accordingly.
28:19
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution
Loading editor…
1class Solution:
2 def minInteger(self, num: str, k: int) -> str:
3
Starter codePython 3Spaces: 4
Examples
Input
"4321"
4
Input
"100"
1
Input
"36789"
1000
Your code is saved on this device.Solution