Re: [閒聊] 每日leetcode
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
```
--
http://i.imgur.com/OLvBn3b.jpg

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 185.213.82.241 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1722558172.A.37F.html
※ 編輯: dont (185.213.82.241 臺灣), 08/02/2024 08:35:43
推
08/02 08:36,
1年前
, 1F
08/02 08:36, 1F
討論串 (同標題文章)
完整討論串 (本文為第 615 之 1554 篇):