Problem · Array
Minimum Swaps Required to Group All Red Balls Together
Learn this problemProblem statement
Given a string of red and white balls, return the minimum number of adjacent swaps required to arrange all red balls into one contiguous segment.
Given that S is "RW" repeated 100,000 times, your function should return -1, as the minimum number of swaps required exceeds 10^9.
Function
minSwaps(colors: String) → intExamples
Example 1
colors = "WRRWR"return = 1Swap the last red ball with the white ball immediately before it: "WRRWR" becomes "WRRRW". All red balls are contiguous after one adjacent swap.
Example 2
colors = "WWRWWWWWWWWWRWR"return = 10The red balls start at indices 2, 12, and 14. After subtracting their target offsets 0, 1, and 2, the normalized positions are 2, 11, and 12. Moving them around the median normalized position costs 9 + 0 + 1 = 10 swaps.
Example 3
colors = "WWW"return = 0There are no red balls that need to be grouped together.
Example 4
colors = "WRRWRW"return = 1As in the first example, moving the final red ball one position to the left makes all three red balls contiguous.
Constraints
N is an integer in the range [1..100,000]The string S consists only of the characters 'R' and 'W'.Constraints updated in full on 05-24-2025 🥑More Microsoft problems
- Authentication SystemOA · Seen Jul 2026
- Binary String Swap TimeOA · Seen Jul 2026
- Minimum Effort Task ScheduleOA · Seen Jul 2026
- Maximum Pipeline ThroughputOA · Seen Jul 2026
- Maximum Strong Team SubarrayOA · Seen Jul 2026
- Minimum Cost K-Capable ModelsOA · Seen Jul 2026
- Alphabetically Smallest PalindromeOA · Seen Jul 2026
- Maximum Reward PointsOA · Seen Jul 2026