Leetcode 1107 Solution

This article provides solution to leetcode question 1107 (minimum-swaps-to-group-all-1s-together)

https://leetcode.com/problems/minimum-swaps-to-group-all-1s-together

Solution

class Solution:
    def minSwaps(self, data: List[int]) -> int:
        size = sum(data)

        l = 0
        r = 0
        cnt = 0
        ans = float('inf')
        while r < len(data):
            if data[r] == 0:
                cnt += 1

            if r - l + 1 > size:
                if data[l] == 0:
                    cnt -= 1
                l += 1

            if r - l + 1 == size:
                ans = min(ans, cnt)
            r += 1

        return ans