Advertisement
2134. Minimum Swaps to Group All 1's Together II
MediumView on LeetCode
Time: O(n)
Space: O(1)
Approach
Sliding window of size k (count of 1s) on circular array; minimize zeros inside.
2134.cs
C#
// Approach: Sliding window of size k (count of 1s) on circular array; minimize zeros inside.
// Time: O(n) Space: O(1)
public class Solution
{
public int MinSwaps(int[] nums)
{
int n = nums.Length;
int k = nums.Where(x => x == 1).Count();
int ones = 0, maxOnes = 0;
for (int i = 0; i < n * 2; i++)
{
if (i >= k && nums[(i - k) % n] == 1)
--ones;
if (nums[i % n] == 1)
++ones;
maxOnes = Math.Max(maxOnes, ones);
}
return k - maxOnes;
}
}Advertisement
Was this solution helpful?