尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
3499.操作后最大活跃区段数 I:一次遍历(脑筋急转弯)
【LetMeFly】3499.操作后最大活跃区段数 I一次遍历(脑筋急转弯)力扣题目链接https://leetcode.cn/problems/maximize-active-section-with-trade-i/给你一个长度为n的二进制字符串s其中1表示一个活跃区段。0表示一个非活跃区段。你可以执行最多一次操作来最大化s中的活跃区段数量。在一次操作中你可以将一个被0包围的连续1区块转换为全0。然后将一个被1包围的连续0区块转换为全1。返回在执行最优操作后s中的最大活跃区段数。注意处理时需要在s的两侧加上1即t 1 s 1。这些加上的1不会影响最终的计数。示例 1输入s 01输出1解释因为没有被0包围的1区块因此无法进行有效操作。最大活跃区段数为 1。示例 2输入s 0100输出4解释字符串0100→ 两端加上1后得到101001。选择0100101001→100001→111111。最终的字符串去掉两端的1后为1111。最大活跃区段数为 4。示例 3输入s 1000100输出7解释字符串1000100→ 两端加上1后得到110001001。选择000100110001001→110000001→111111111。最终的字符串去掉两端的1后为1111111。最大活跃区段数为 7。示例 4输入s 01010输出4解释字符串01010→ 两端加上1后得到1010101。选择0101010101→1000101→1111101。最终的字符串去掉两端的1后为11110。最大活跃区段数为 4。提示1 n s.length 105s[i]仅包含0或1解题思路脑筋急转弯最终求的是1的个数而非连续1的个数所以我们的目的是把尽可能多的0变成1。首先可以把一段1变成0这个操作的唯一意义就是把原本不相连的两段0连接起来然后下一步一起变成1。所以其实这道题最终是把相邻的两段0变成1然后返回1的个数。也相当于返回原始1的个数加上相邻两段0中0的个数。解题方法一次遍历回忆一下我们都需要哪些值字符串中原始1的个数这个可以由一个变量c n t 1 cnt1cnt1在一次遍历后得出。字符串中当前区段共计遍历到了多少个0这个可以由一个变量n o w c n t 0 now_cnt0nowc​nt0在遍历过程中维护。当前字符是0的话n o w c n t 0 1 now_cnt01nowc​nt01当前字符是刚刚由0转1的话n o w c n t 0 now_cnt0nowc​nt0置0 00。字符串上一个连续0的个数这个可以由一个变量l a s t c n t 0 last_cnt0lastc​nt0来维护初始值为无穷小。字符串最大两个连续0的个数这个可以由一个变量m a x 0 max0max0来更新。这样我们就可以开始遍历字符串如果当前元素是0则n o w c n t 0 1 now_cnt01nowc​nt01如果当前原始是刚刚由0变成了1则更新m a x 0 max0max0、l a s t c n t 0 last_cnt0lastc​nt0、n o w c n t 0 now_cnt0nowc​nt0。时空复杂度分析时间复杂度O ( l e n ( s ) ) O(len(s))O(len(s))空间复杂度O ( 1 ) O(1)O(1)AC代码C/* * LastEditTime: 2026-07-21 09:48:29 */classSolution{public:intmaxActiveSectionsAfterTrade(strings){intcnt10,max0-1000000;for(intlast_cnt0-1000000,now_cnt00,i0,ns.size();in;i){if(ins[i]0){now_cnt0;}elseif(is[i-1]0){// 0-1max0max(max0,last_cnt0now_cnt0);last_cnt0now_cnt0;now_cnt00;}cnt1ins[i]1;}returncnt1max(max0,0);}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源
RELATED

相关推荐

EDMA3寄存器深度解析:从队列状态、事件管理到内存保护的实战指南

EDMA3寄存器深度解析:从队列状态、事件管理到内存保护的实战指南

1. 项目概述:从寄存器手册到实战理解的跨越如果你正在开发基于TI C6000系列DSP或类似SoC的嵌入式系统,并且性能瓶颈卡在了数据搬运上,那么你肯定绕不开EDMA3这个核心外设。手册里那几百页的寄存器描述,尤其是关于队列状态、事件管…

📅 2026/9/15 15:46:09
众阳公共卫生上报系统|医院公共卫生信息化、无纸化智能管理解决方案

众阳公共卫生上报系统|医院公共卫生信息化、无纸化智能管理解决方案

在传统医院公共卫生管理工作中,上报、查询、统计等工作长期依赖人工手工操作,流程繁琐、效率低下、易出现漏报、错报、数据滞后等问题。众阳公共卫生上报系统专为医疗机构公共卫生管理场景打造,全面替代传统手工模式,实现公共卫生…

📅 2026/9/5 1:33:17
FreeType 3.0路线图前瞻:下一代字体引擎的技术演进与功能预测

FreeType 3.0路线图前瞻:下一代字体引擎的技术演进与功能预测

FreeType 3.0路线图前瞻:下一代字体引擎的技术演进与功能预测 【免费下载链接】freetype Official mirror of https://gitlab.freedesktop.org/freetype/freetype 项目地址: https://gitcode.com/gh_mirrors/free/freetype FreeType作为一款广泛应用的开源字…

📅 2026/9/15 10:54:36
MORE NEWS

更多资讯

📰

Altium Designer异形焊盘制作全攻略:自定义形状与封装库管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

嵌入式开发告别古法编程:从寄存器操作到工程化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Terratest 版本固定指南:用 `go get` 锁定依赖、规避子路径 require 陷阱与 v1/v2 差异解析

测试开发工具DevOps质量保障 【免费下载链接】terratest Terratest is a Go library that makes it easier to write automated tests for your infrastructure code. 项目地址: https://gitcode.com/gh_mirrors/te/terratest 点击查看 免费下载 本篇指南围绕 Terr…

📰

DeepSeek-OCR-2架构深度解析:Visual Causal Flow背后的LM as Vision Encoder

DeepSeek-OCR-2架构深度解析:Visual Causal Flow背后的LM as Vision Encoder 【免费下载链接】DeepSeek-OCR-2 Visual Causal Flow 项目地址: https://gitcode.com/gh_mirrors/de/DeepSeek-OCR-2 DeepSeek-OCR-2 是新一代文档 OCR 大模型,其核心创…

📰

教机器下围棋的顶尖头脑集体出走,连带卷走四百亿美元热钱

教机器下围棋的顶尖头脑集体出走,连带卷走四百亿美元热钱 9月清晨的伦敦市中心,15位来自Google DeepMind的在职科学家和离职老员工坐在一起吃早餐。热咖啡刚端上桌,大家聊的不是最新的学术论文,也不是实验室的内部进展&#xff0c…

📰

NAS多设备UPS断电联动:基于NUT实现威联通与Ubuntu优雅关机

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬