。 K 连续位翻转的最小次数

。 k 连续位翻转的最小次数

995。 K 连续位翻转的最小次数

给你一个二进制数组 nums 和一个整数 k。

k 位翻转是从 nums 中选择一个长度为 k 的子数组,同时将子数组中的每个 0 变为 1,将子数组中的每个 1 变为 0。

返回所需的k位翻转的最小次数,以使数组中不存在0。如果不可能,则返回-1.

子数组是数组的连续部分。

示例1:

ChatX翻译 ChatX翻译

最实用、可靠的社交类实时翻译工具。 支持全球主流的20+款社交软件的聊天应用,全球200+语言随意切换。 让您彻底告别复制粘贴的翻译模式,与世界各地高效连接!

ChatX翻译 57 查看详情 ChatX翻译 输入: nums = [0,1,0], k = 1输出: 2说明: 翻转 nums[0],然后翻转 nums[2]。

示例2:

输入: nums = [1,1,0], k = 2输出: -1说明: 无论我们如何翻转大小为 2 的子数组,都不能让数组变成 [1,1,1]。

示例3:

输入: nums = [0,0,0,1,0,1,1,0], k = 3输出: 3说明:

 翻转 nums[0],nums[1],nums[2]: nums 变为 [1,1,1,1,0,1,1,0]  翻转 nums[4],nums[5],nums[6]: nums 变为 [1,1,1,1,1,0,0,0]  翻转 nums[5],nums[6],nums[7]: nums 变为 [1,1,1,1,1,1,1,1]

限制:

1 51

解决方案:

类解决方案{    /*** @param 整数[] $nums     * @param 整数 $k     * @return 整数*/    函数 minKBitFlips($nums, $k) {        $flipped = array_fill(0, count($nums), false);        $validFlipsFromPastWindow = 0;        $翻转计数 = 0;        for ($i = 0; $i = $k) {                if ($flipped[$i - $k]) {                    $validFlipsFromPastWindow--;                }            }            if ($validFlipsFromPastWindow % 2 == $nums[$i]) {                if ($i + $k > 计数($nums)) {                    返回-1;                }                $validFlipsFromPastWindow++;                $翻转[$i] = true;                $flipCount++;            }        }        返回$flipCount;    }}

联系链接

领英GitHub

以上就是。 K 连续位翻转的最小次数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/529048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何使用 JavaScript/jQuery 为网站创建暗/亮模式?
上一篇 2025年11月9日 09:35:17
linux环境变量path在哪
下一篇 2025年11月9日 09:35:20

相关推荐

发表回复

登录后才能评论
关注微信