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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

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

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

示例 1:
输入:A = [0,1,0], K = 1
输出:2
解释:先翻转 A[0],然后翻转 A[2]。示例 2:
输入:A = [1,1,0], K = 2
输出:-1
解释:无论我们怎样翻转大小为 2 的子数组,我们都不能使数组变为 [1,1,1]。示例 3:
输入:A = [0,0,0,1,0,1,1,0], K = 3
输出:3
解释:
翻转 A[0],A[1],A[2]: A变成 [1,1,1,1,0,1,1,0]
翻转 A[4],A[5],A[6]: A变成 [1,1,1,1,1,0,0,0]
翻转 A[5],A[6],A[7]: A变成 [1,1,1,1,1,1,1,1]提示:
1 <= A.length <= 30000
1 <= K <= A.length

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-number-of-k-consecutive-bit-flips
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 1094. 拼车
LeetCode 370. 区间加法(差分思想)
LeetCode 732. 我的日程安排表 III(差分思想)
LeetCode 1674. 使数组互补的最少操作次数(差分思想)

  • 差分思想,用差分数组记录区间翻转情况
  • 左端点翻转一次的话,长度为 K 的区间左端点+1,右端点+1的位置 -1
  • 差分数组的前缀和为每个位置的翻转次数,翻转次数为偶数的话,状态不变
class Solution {
public:int minKBitFlips(vector<int>& A, int K) {int n = A.size();vector<int> flip(n+1, 0);int presum = 0;//每个位置的翻转次数int ans = 0;for(int i = 0; i <= n-K; ++i){   //前面可以翻的位置presum += flip[i];if((A[i]+presum)%2 == 1)//不用再翻了continue;else{flip[i]++;//左端点+1ans++;flip[i+K]--;//差分,右端点+1的位置 -1presum++;//前缀和更新}}for(int i = n-K+1; i < n; i++){   //剩余的不能再翻了,不足K个presum += flip[i];if((A[i]+presum)%2 == 0)return -1;//有不为1的,不能满足全部翻成1}return ans;}
};

224 ms 74.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何自学人工智能?

不少同学跃跃欲试&#xff0c;想投入 AI 的怀抱&#xff0c;但苦于不知如何下手。其中&#xff0c;人工智能的核心就是机器学习&#xff08;Machine Learning&#xff09;&#xff0c;它是使计算机具有智能的根本途径&#xff0c;其应用遍及人工智能的各个领域。 我们今天就来分…

2014/4/16

2014-04-16 crystal 14:10:53 股东大会开了没今天 crystal 14:11:08 今天296创新高了 crystal 2014/4/16 14:08:33 32.9 米多爸爸 2014/4/16 14:08:42 296不错&#xff0c;不是今天开股东大会吗 米多爸爸 2014/4/16 14:08:51 延期了&…

AI 人工智能学习经典书单

人工智能相关岗位中&#xff0c;涉及到的内容包含&#xff1a;算法、深度学习、机器学习、自然语言处理、数据结构、Tensorflow、Python 、数据挖掘、搜索开发、神经网络、视觉度量、图像识别、语音识别、推荐系统、系统算法、图像算法、数据分析、概率编程、计算机数学、数据仓…

牛客 牛牛爱喝酒(模拟)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9752/A 来源&#xff1a;牛客网 牛牛是一个酒鬼&#xff0c;非常爱喝酒&#xff0c; 一瓶酒m元钱&#xff0c; 两个酒瓶可以换一瓶酒&#xff0c; 四个瓶盖可以换一瓶酒&#xff0c; 现在…

零基础30分钟开启你的快速开发之旅

零基础30分钟开启你快速开发之旅 1. 前言 接触AgileEAS.NET SOA 中间件平台&#xff08;以下简称EAS.NET平台&#xff09;有4个多月时间&#xff0c;经过试用认为可以把它作为一个开发的基础平台&#xff0c;开发团队可以把开发的重点放在需求的把控和项目的交付上&#xff0c;…

Python语法糖——遍历列表时删除元素

Python的for可以遍历一个List&#xff0c;但是在遍历的过程中删除元素常常会得到意想不到的结果甚至程序出现异常&#xff0c;例如&#xff1a; lst [1, 1, 0, 2, 0, 0, 8, 3, 0, 2, 5, 0, 2, 6]for item in lst:if item 0:lst.remove(item) print lst输出&#xff1a; [1, 1…

牛客 牛牛的独特子序列(双指针/二分查找)

文章目录1. 题目2. 解题2.1 双指针2.2 二分查找1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9752/B 来源&#xff1a;牛客网 牛牛现在有一个长度为len只包含小写字母‘a’-z’的字符串x&#xff0c;他现在想要一个特殊的子序列&#xff0c; 这个子序列的长…

TCPIP通信

最近在开发TCPIP通信&#xff0c;封装了3个类&#xff0c;望各位大神指点指点。1 using System;2 using System.Collections.Generic;3 using System.Text;4 using System.Net.Sockets;5 using System.Threading;6 using System.Net;7 using System.Linq;8 using System.Net.Ne…

Python 20 秒画完小猪佩奇“社会人”!

每天写代码的程序员&#xff0c;你们知道今年社交平台上最火的带货女王是谁吗&#xff1f;范冰冰&#xff1f;杨幂&#xff1f;Angelababy&#xff1f;不&#xff0c;是猪猪女孩小猪佩奇。 如果你经常用抖音、快手、B 站、知乎、微博……或者类似的任何一个内容或社交平台&…

使用RNN预测文档归属作者

文章目录1. 文本处理2. 文本序列化3. 数据集拆分4. 建立RNN模型5. 训练6. 测试参考 基于深度学习的自然语言处理 1. 文本处理 数据预览 # 有两个作者的文章&#xff08;A, B&#xff09;&#xff0c;定义为0&#xff0c; 1 A 0 # hamilton B 1 # madison UNKNOWN -1# 把…

Python进阶-函数默认参数,特别是参数传递为空列表

这两天遇到函数默认参数的bug&#xff0c;在互联网上好好总结了一下&#xff1a;如非特别说明&#xff0c;下文均基于Python3一、默认参数 python为了简化函数的调用&#xff0c;提供了默认参数机制&#xff1a;def pow(x, n 2):r 1while n > 0:r * xn - 1return r这样在调…

java中的Switch case语句

java中的Switch case 语句 在Switch语句中有4个关键字:switch,case break,default. 在switch(变量)&#xff0c;变量只能是整型或者字符型&#xff0c;程序先读出这个变量的值&#xff0c;然后在各个"case"里查找哪个值和这个变量相等,如果相等,则条件成立,程序执行相…

LeetCode 1674. 使数组互补的最少操作次数(差分思想)

文章目录1. 题目2. 解题1. 题目 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit 。 每一次操作&#xff0c;你可以将 nums 中的任何整数替换为 1 到 limit 之间的另一个整数。 如果对于所有下标 i&#xff08;下标从 0 开始&#xff09;&#xff0c;nums[i] nums[…

python 数据分析-读写数据csv、xlsx文件

1、读写csv文件可以使用基础python实现&#xff0c;或者使用csv模块、pandas模块实现。 基础python读写csv文件 读写单个CSV 以下为通过基础python读取CSV文件的代码&#xff0c;请注意&#xff0c;若字段中的值包含有","且该值没有被引号括起来&#xff0c;则无法…

c#将list集合转换为datatable的简单办法

public static class ExtensionMethods { /// <summary> /// 将List转换成DataTable /// </summary> /// <typeparam name"T"></typeparam> /// <param name"data"></param&g…

Kaggle 房价预测竞赛优胜方案:用 Python 进行全面数据探索

&#xff3b;导读&#xff3d;Kaggle 的房价预测竞赛从 2016 年 8 月开始&#xff0c;到 2017 年 2 月结束。这段时间内&#xff0c;超过 2000 多人参与比赛&#xff0c;选手采用高级回归技术&#xff0c;基于我们给出的 79 个特征&#xff0c;对房屋的售价进行了准确的预测。今…

使用GRU单元的RNN模型生成唐诗

文章目录1. 读取数据2. 字符索引3. 创建文本序列4. 创建文本编码序列5. 使用GRU单元建立RNN模型6. 文本生成参考 基于深度学习的自然语言处理 本文使用 GRU 单元建立 RNN 网络&#xff0c;使用唐诗三百首进行训练&#xff0c;使用模型生成唐诗。 GRU RNN 网络能够克服简单RNN…

循环与分支

1. 循环 for循环for arg in [list] 这是一个基本的循环结构. 它与C语言中的for循环结构有很大的不同.for arg in [list]docommand(s)...done for arg in "$var1" "$var2" "$var3" ... "$varN" 在[list]中的参数加上双引号是为了阻止单…

Python数据结构常见的八大排序算法(详细整理)

前言 八大排序&#xff0c;三大查找是《数据结构》当中非常基础的知识点&#xff0c;在这里为了复习顺带总结了一下常见的八种排序算法。 常见的八大排序算法&#xff0c;他们之间关系如下&#xff1a; 排序算法.png 他们的性能比较&#xff1a; 下面&#xff0c;利用Python分别…

牛客 牛牛选物(01背包)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9887/A 来源&#xff1a;牛客网 牛牛有现在有n个物品&#xff0c;每个物品有一个体积v[i]和重量g[i],他想选择其中总体积恰好为V的若干个物品&#xff0c;想使这若干个物品的总重量最大&…