【1375. 二进制字符串前缀一致的次数】

news/2024/10/18 0:29:20/

来源:力扣(LeetCode)

描述:

给你一个长度为 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] 中所有整数构成的一个排列

方法:记录翻转位置的最大值

思路与算法

在第 i 次翻转之后,我们希望 [1, i] 内的所有位都是 1,这等价于「前 i 次翻转中下标的最大值等于 i」。

因此,我们对数组 flip 进行遍历,同时记录翻转下标的最大值。当遍历到位置 i 时,如果最大值恰好等于 i,那么答案加 1。

需要注意数组的下标是从 0 开始的,因此在实际的代码编写中,判断的值为 i+1。

代码:

class Solution {
public:int numTimesAllBlue(vector<int>& flips) {int n = flips.size();int ans = 0, right = 0;for (int i = 0; i < n; ++i) {right = max(right, flips[i]);if (right == i + 1) {++ans;}}return ans;}
};

执行用时:48 ms, 在所有 C++ 提交中击败了70.14%的用户
内存消耗:37.4 MB, 在所有 C++ 提交中击败了99.31%的用户
复杂度分析
时间复杂度:O(n),其中 n 是数组 flips 的长度。
空间复杂度:O(1)。
author:LeetCode-Solution


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

相关文章

【githubshare】国外工程师 Neil 在 GitHub 上开源了任天堂 64 模拟器

国外工程师 Neil 在 GitHub 上开源了任天堂 64 模拟器&#xff08;N64&#xff09;&#xff1a;N64Wasm。 你只需将提前下载好的 ROM&#xff0c;拖拽至 Neil 开发的 Web 应用上&#xff0c;即可在页面上玩 N64 游戏。 同时&#xff0c;Web 界面上也能定制键盘快捷键&#xf…

超级任天堂游戏模拟器被曝安全漏洞

超级任天堂&#xff08;SNES&#xff0c;Super Nintendo Entertainment System&#xff09;是任天堂全球知名主机NES&#xff08;国内称为小霸王&#xff09;的后续主机&#xff0c;主机采用16位色表现&#xff0c;令主机的画面表现在当时非常之棒。而作为当时的主机霸主&#…

任天堂Switch玩舞力全开unlimited曲目卡顿问题解决思路

昨天入手了Just Dance 2019&#xff0c;跳了一晚上精疲力尽&#xff0c;感觉是个好游戏&#xff0c;顺带可以减个肥。。 但是正准备尝试会员内更丰富的曲目时&#xff0c;发现每一首都卡的不行&#xff0c;画质也十分的渣。 最蛋疼的是它加载完还不缓存&#xff0c;每次重开都要…

citra linux安装教程,Citra3ds模拟器配置需求说明

Citra3ds模拟器对电脑的需求整体不是很高&#xff0c;但是依然需要特定的一些条件才可以轻松体验这个模拟器&#xff0c;这里简单说明一下需求。 1.必须是win7 64位或win8 64位或win10 64位&#xff0c;32位目前无解。linux或苹果osx&#xff0c;可以试试到官方citra下载和讨论…

GEM5 模拟器简介

GEM5是一款模块化的离散事件驱动全系统模拟器&#xff0c;它结合了M5和GEMS中最优秀的部分&#xff0c;是一款高度可配置、集成多种ISA和多种CPU模型的体系结构模拟器。M5是由Michigan大学开发的一款开源的多处理机模拟器&#xff0c;受到了业内的广泛关注&#xff0c;很多高水…

cmodel模拟器开发

cmodel模拟器开发 对于一个公司来说&#xff0c;产品的设计周期就是生命线&#xff0c;一般来说都会在设计功能级仿真的c-model后直接转向RTL设计。 在目前的技术下&#xff0c;做cycle-by-cycle的设计和直接RTL设计的时间&#xff0c;感觉是差不太多的。nVidia同时维护functio…

android10运行mine,MiNE模拟器安卓10

《MiNE模拟器安卓10》通过这款软件的全新使用方式和调整&#xff0c;选择属于自己的全新舒适游戏体验&#xff0c;全新辅助工具的使用和调整&#xff0c;感受到游戏中更加强大的魅力和体验&#xff0c;让你在手机中也会拥有更合适的挑战哦&#xff0c;赶紧来下载使用吧。 软件说…

uclinux上任天堂游戏模拟器移植

uclinux和linux的区别我就不用多说了&#xff0c;uclinux是专门为没有MMU的cpu而准备的。以下两点却别会影响到我们的移植。 1.uclinux生成的目标文件格式是flat&#xff0c;可以在裸机上跑.uclinux和ARM7可能只能运行这种格式的程序&#xff0c;连接时需要加-elf2flat选项,否则…