在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。
返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。
示例 1:
1 | 输入:A = [0,1,0], K = 1 |
示例 2:
1 | 输入:A = [1,1,0], K = 2 |
示例 3:
1 | 输入:A = [0,0,0,1,0,1,1,0], K = 3 |
差分~
这种一次连续改 $k$ 位的题就是很经典的差分,我们只需要从左往右扫,碰到 $0$ 就改成 $1$ 即可,注意因为是连续修改,所以要用差分,线段树肯定也行,但是要麻烦许多,做完这题的可以类比牛客寒假训练营的一道题:题目链接,也是利用差分的性质,AC代码如下:
1 | class Solution { |