Re: [闲聊] 每日leetcode

楼主: dont   2024-08-02 08:22:49
2134. Minimum Swaps to Group All 1's Together II
## 思路
fixed size sliding window
size = 阵列里面1的个数
swap次数 = window里面0的个数
因为是circular 扫两次阵列让头尾相接
## Complexity
Time: O(N)
Space: O(1)
## Code
```python
class Solution:
def minSwaps(self, nums: List[int]) -> int:
ones = sum(nums)
n = len(nums)
ans = count = sum(nums[i] == 0 for i in range(ones))
for i in range(ones, 2 * n):
count -= (nums[(i-ones) % n] == 0)
count += (nums[i % n] == 0)
ans = min(ans, count)
return ans
```
作者: sustainer123 (caster)   2024-08-02 08:36:00
大师 太快了吧

Links booklink

Contact Us: admin [ a t ] ucptt.com