2938. Separate Black and White Balls
MediumView on LeetCode
Time: O(n)
Space: O(1)
Problem Overview
Minimum swaps to group all 0s to left and all 1s to right.
Intuition
Minimum swaps to group all 0s to left and all 1s to right. Count 1s in left half (should be 0s).
Algorithm
- 1Count total 1s = k. Sliding window of size k: minimum 0s in window = minimum swaps.
Common Pitfalls
- •Swaps needed = 0s in the window of size (total 1s). Sliding window minimum.
2938.cs
C#
// Approach: Count required swaps by tracking black balls encountered before each white position.
// Time: O(n) Space: O(1)
public class Solution
{
public long MinimumSteps(string s)
{
long ans = 0;
int ones = 0;
foreach (char c in s)
{
if (c == '1')
ones++;
else // Move 1s to the front of the current '0'.
ans += ones;
}
return ans;
}
}Was this solution helpful?
Related Problems
- 4. Median of Two Sorted Arrays(Hard)
- 11. Container With Most Water(Medium)
- 15. 3Sum(Medium)
- 16. 3Sum Closest(Medium)
- 19. Remove Nth Node From End of List(Medium)
- 26. Remove Duplicates from Sorted Array(Easy)