​LeetCode解法汇总1375. 二进制字符串前缀一致的次数

news/2024/11/25 3:47:04/

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个长度为 n 、下标从 1 开始的二进制字符串,所有位最开始都是 0 。我们会按步翻转该二进制字符串的所有位(即,将 0 变为 1)。

给你一个下标从 1 开始的整数数组 flips ,其中 flips[i] 表示对应下标 i 的位将会在第 i 步翻转。

二进制字符串 前缀一致 需满足:在第 i 步之后,在  区间 [1, i] 内的所有位都是 1 ,而其他位都是 0 。

返回二进制字符串在翻转过程中 前缀一致 的次数。

示例 1:

输入:flips = [3,2,4,1,5]
输出:2
解释:二进制字符串最开始是 "00000" 。
执行第 1 步:字符串变为 "00100" ,不属于前缀一致的情况。
执行第 2 步:字符串变为 "01100" ,不属于前缀一致的情况。
执行第 3 步:字符串变为 "01110" ,不属于前缀一致的情况。
执行第 4 步:字符串变为 "11110" ,属于前缀一致的情况。
执行第 5 步:字符串变为 "11111" ,属于前缀一致的情况。
在翻转过程中,前缀一致的次数为 2 ,所以返回 2 。

示例 2:

输入:flips = [4,1,2,3]
输出:1
解释:二进制字符串最开始是 "0000" 。
执行第 1 步:字符串变为 "0001" ,不属于前缀一致的情况。
执行第 2 步:字符串变为 "1001" ,不属于前缀一致的情况。
执行第 3 步:字符串变为 "1101" ,不属于前缀一致的情况。
执行第 4 步:字符串变为 "1111" ,属于前缀一致的情况。
在翻转过程中,前缀一致的次数为 1 ,所以返回 1 。

提示:

  • n == flips.length
  • 1 <= n <= 5 * 104
  • flips 是范围 [1, n] 中所有整数构成的一个排列

解题思路:

* 解题思路:

* 一开始没有看题解,我以为0翻转成1之后,还能翻转回来,所以选择了相对复杂一些的思路,这个思路对于1不能翻转回0一样适用。

* 构建一个有序的set,然后遍历数组,如果set中存在,则删除这个节点,如果不存在,则加入到set中。

* 每次循环的时候,取set中最大的值,和set的长度对比,相同则次数加1,不相同则跳过。

代码:

class Solution1375
{
public:int numTimesAllBlue(vector<int> &flips){set<int> numSet;int abs = 0;for (int i = 0; i < flips.size(); i++){int value = flips[i];if (numSet.find(value) == numSet.end()){numSet.insert(value);}else{numSet.erase(value);}int maxNum = *(--numSet.end());if (maxNum == numSet.size()){abs++;}}return abs;}
};


http://www.ppmy.cn/news/378828.html

相关文章

Selenium Python教程第7章:Selenium编程其它功能

7. Selenium其它功能 7.1 Action Chains 动作链功能 WebDriver只能模拟针对特定元素的click, send_keys 操作&#xff0c;无法执行鼠标移动、悬浮、按键&#xff0c;选择菜单等操作&#xff0c;需要通过 Action Chains 类来操作 如下面操作&#xff0c;打开主菜单项后&#x…

Vue中如何进行音频与视频播放?

Vue中如何进行音频与视频播放&#xff1f; 在Vue中&#xff0c;我们可以使用HTML5的<audio>和<video>标签来实现音频和视频的播放。Vue本身并没有提供专门的音频或视频播放组件&#xff0c;但是可以使用Vue的数据绑定和生命周期钩子来控制音频和视频的播放。 音频…

c++中释放指针delete后加一个[]是什么意思

在 C 中&#xff0c;用 new 运算符分配的动态内存&#xff0c;需要使用 delete 运算符来释放。但是如果这块内存是通过数组形式分配的&#xff0c;使用 delete 只会释放数组的第一个元素&#xff0c;而不会释放整个数组&#xff0c;这可能会导致内存泄漏。 为了释放整个数组&a…

linuxOPS基础_进程查看与管理

进程与程序的关系 进程是正在执行的一个程序或命令&#xff0c;每个进程都是一个运行的实体&#xff0c;并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。 ​ 简单来说&#xff0c;程序是人使用计算机语言编写的&#xff0c;可…

Java中 is empty 和 is blank 的区别?

在 Java 中&#xff0c;isEmpty() 和 isBlank() 方法用于判断字符串是否为空或空格字符。这两个方法的区别在于&#xff0c;isEmpty() 只能检测字符串是否为空&#xff0c;而isBlank()不仅能检测字符串是否为空&#xff0c;还可以检测一个字符串是否只包含空格字符。 具体来说&…

刘亦菲演绎全新杜鲁尔系列广告大片

上海2021年8月25日 /美通社/ -- 天梭于刘亦菲生日之际推出杜鲁尔系列广告大片。 天梭全球形象代言人刘亦菲演绎全新杜鲁尔系列广告大片 时刻从容 简约灰白&#xff0c;亦有光影相随。 似在探索钢铁森林&#xff0c;又如洞察自我初心。纯粹、沉着&#xff0c;镜头前的刘亦菲以不…

OpenAI 刚刚宣布了海量更新

OpenAI 刚刚宣布了海量更新&#xff0c;增加函数调用&#xff0c;支持更长上下文&#xff0c;价格更低&#xff01; ​新模型上架 1、gpt-4-0613 2、gpt-4-32k-0613 3、gpt-3.5-turbo-0613 4、gpt-3.5-turbo-16k 部分模型降价 1、text-embedding-ada-002&#xff1a;$0.00…

深入理解相机硬件抽象层

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、概览二、Camera HIDL 接口三 、Camera Provider 主程序四、Camera HAL3 接口 一、概览 始于谷歌的Treble开源项目&#xff0c;基于接口与实现的分离…