在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。

返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。

示例 1:

输入:A = [0,1,0], K = 1
输出:2
解释:先翻转 A[0],然后翻转 A[2]。

解题思路

贪心思路:遍历每个0元素,对其进行翻转,使用队列维护翻转的子数组的首位下标

代码

class Solution {public int minKBitFlips(int[] A, int K) {int res=0;LinkedList<Integer> queue=new LinkedList<>();for (int i = 0; i < A.length; i++) {if(!queue.isEmpty()&&i-K+1>queue.getFirst())
//当前位置不在队头翻转的子数组范围内,所以移除队头元素queue.removeFirst();
//剩余队列中的元素个数,代表当前位置被多少个已经翻转的子数组覆盖,即当前位置的翻转次数,偶数次翻转是本身,奇数次翻转是相反数,以此判定当前位置的元素是否为0if(queue.size()%2==A[i]){if(i+K>A.length) return -1;//不能恰好被k长度子数组覆盖res++;queue.addLast(i);}}return res;}
}

leetcode 995. K 连续位的最小翻转次数(贪心算法)相关推荐

  1. LeetCode 995. K 连续位的最小翻转次数(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 ...

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

    链接:995. K 连续位的最小翻转次数 题解: https://leetcode-cn.com/problems/minimum-number-of-k-consecutive-bit-flips/ ...

  3. Leetcode-滑窗/差分数组-995. K 连续位的最小翻转次数

    题目995. K 连续位的最小翻转次数: 题解: 方法一:队列 + 滑窗(from 负雪明烛) class Solution { public:int minKBitFlips(vector<i ...

  4. 995.K连续位的最小翻转次数(唯唯诺诺)

    如题: 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K 位翻转的最小次数 ...

  5. LeetCode-995. K连续位的最小翻转次数(Minimum Number of K Consecutive Bit Flips)

    K连续位的最小翻转次数 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K ...

  6. leetCode-995:K 连续位的最小翻转次数

    题目描述: 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K 位翻转的最小 ...

  7. LeetCode 1318. 或运算的最小翻转次数(位运算)

    1. 题目 给你三个正整数 a.b 和 c. 你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数. 「位翻转操作」是指将一个数的二进制表 ...

  8. 算法--运算的最小翻转次数

    题目 给你三个正整数 a.b 和 c.你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数.「位翻转操作」是指将一个数的二进制表示任何单个 ...

  9. 阿里笔试题:或运算的最小翻转次数 C++

    阿里笔试题:或运算的最小翻转次数 C++ 题目描述 输入输出示例 解题思路 代码 题目描述 给出一个数字n,表示有n组输入用例子,每一组输入给出三个正整数a.b.c,可以对a和b进行位翻转操作,每一次 ...

最新文章

  1. 第5关:32位快速加法器设计
  2. (十六) 整合spring cloud云架构 -使用spring cloud Bus刷新配置
  3. Java Socket 学习
  4. spring cloud构建互联网分布式微服务云平台-docker部署spring cloud项目
  5. 【Android工具】安卓魔力播放器moliplayer绿色无广告,手机DLNA播放器
  6. python3.7 安装pip3_Ubuntu16.04 安装python3.7和pip3
  7. 在那天的雪停息之前β
  8. C++经典问题:如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B?
  9. 第十二节: EF的三种模式(二) 之 ModelFirst模式(SQLServer为例)
  10. java 类的域_Java类中对象域的初始化
  11. 2017-2018网络攻防第四周作业
  12. 遍历树,找出所有叶子路径
  13. 编程之美:寻找发帖水王 扩展
  14. JSONP - 从理论到实践
  15. 213.打家劫舍II
  16. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
  17. 最常用20000英语单词表_受够加班煎熬,我整理出10条职场人士最常用的透视表技巧!(下篇)...
  18. 图片alt标签是什么?如何优化Alt标签
  19. 中国历史上水平最高的十首诗词,你都读过吗?
  20. 初识c语言day07(五子棋)

热门文章

  1. leetcode面试题 10.01. 合并排序的数组
  2. eventfd(三)
  3. Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目
  4. 利用ssh反向代理以及autossh实现从外网连接内网服务器
  5. 如何使用阿里云云解析API实现动态域名解析,搭建私有服务器
  6. 砝码称重 洛谷 1441
  7. linux驱动分离分层的概念
  8. ibatis 中 $与#的区别
  9. [置顶] Java Socket实战之一 单线程通信
  10. 常见开源分布式存储系统