初见,还以为有多难,其实只需要算出一共有多少个 1,然后以 1 的总数为窗口去计算 1 的最大数量就行了,而最后的答案就是 k - ans:
func minSwaps(data []int) int {
k := 0
sum := 0
ans := 0
for _, x := range data {
k += x
}
if k == 0 {
return 0
}
for i, x := range data {
sum += x
if i < k - 1 {
continue
}
ans = max(sum, ans)
sum -= data[i - k + 1]
}
return k - ans
}