Leetcode1963. 使字符串平衡的最小交换次数[C++题解]:贪心
文章目录
- 题目
- 题解
题目
题目来源:https://leetcode-cn.com/problems/minimum-number-of-swaps-to-make-the-string-balanced/
题解
分析:贪心。
对于括号序列,排除掉能够匹配的[]
之后,剩余的串有什么特点呢?其实,剩余的串是]]]....[[[
这种格式,即左边全是左括号,右边全是右括号。
根据数学归纳法,]]]....[[[
这种情况交换的次数是:左括号的数量 ÷ 2 向上取整。
比如]]][[[
,左括号的数量为3,需要交换的次数为(3 + 1) / 2 = 2
;
再比如][
,左括号的数量为1,需要交换的次数为(1 + 1) / 2 = 1
;
当然,这里左括号的数量 = 右括号的数量。
下面的代码中:变量l
从左向右统计左括号的数量,与此同时,变量r
统计右括号的数量,如果配对的话,让l--
;如果不配对的话,让r++
;
最终r中存的是剩余右括号的数量,亦等于剩余左括号的数量。
答案就是 (r + 1) / 2
;
时间复杂度 O(n):遍历一遍字符串
空间复杂度:常数级
ac代码
class Solution {public:int minSwaps(string s) {int l = 0, r = 0;for ( const char c : s) {if (c == '[') {l++;}else {if (l > 0) l--;else r++;}}return (r + 1) / 2;}
};
Leetcode1963. 使字符串平衡的最小交换次数[C++题解]:贪心相关推荐
- Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)
801. 使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元 ...
- LeetCode 1653. 使字符串平衡的最少删除次数(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,它仅包含字符 'a' 和 'b' . 你可以删除 s 中任意数目的字符,使得 s 平衡 . 我们称 s 平衡的 当不存在下标 ...
- leetcode - 801. 使序列递增的最小交换次数
解题思路:使用两个状态量来存储信息: swap[i]表示交换A和B中第i个数字,A和B中前i个数字达到严格递增所需要的最小交换次数. keep[i]表示不交换A和B中第i个数字,A和B中前i个数字达到 ...
- LeetCode 801. 使序列递增的最小交换次数(动态规划)
1. 题目 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元素之后,数组 A 和 B ...
- LeetCode 1864. 构成交替字符串需要的最小交换次数
文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 . 请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1 . 交替字符 ...
- leetcode算法题--使序列递增的最小交换次数★
原题链接:https://leetcode-cn.com/problems/minimum-swaps-to-make-sequences-increasing/ 动态规划 dp[0]表示若当前位置不 ...
- Leetcode1703. 得到连续 K 个 1 的最少相邻交换次数[C++题解]:难(货仓选址加强版+滑动窗口+前缀和)
文章目录 题目分析 题目链接 题目分析 首先需要明确一点:最优结果中1的相对位置和开始时不会改变.否则的话就是交换两个1,会徒劳增加交换次数. 比如[1,0,0,0,0,0,1,1],最后变成[0,0 ...
- 第九届 蓝桥杯 决赛 交换次数
问题描述 IT产业人才需求节节攀升.业内巨头百度.阿里巴巴.腾讯(简称BAT)在某海滩进行招聘活动. 招聘部门一字排开.由于是自由抢占席位,三大公司的席位随机交错在一起,形如: ABABTATT,这使 ...
- POJ 3270-Cow SortingA(Polya定理-交换次数)
Cow Sorting Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7309 Accepted: 2874 Descr ...
最新文章
- 青源 LIVE 预告 | 北大王一飞:高效 GAN 采样算法 (ECML 最佳论文解读)
- 跟我学jQuery(三) 无所不能的选择器1
- 【直播预告】第四范式Intel AI应用与异构内存编程挑战赛专场活动开启报名
- UILabel 宽高自适应
- 医疗行业的售前工程师如何撰写人工智能案例申请材料
- 监听 html dom 变化,js怎么监听元素属性变化
- newifi3高恪魔改最新_12.08达达最新球球id账号呆瓜表
- lua学习 第二章数据与标准库
- 用eclipse创建Java项目(以一个初学者的角度全面教学)
- PostgreSQL存储过程BEGIN块的事务处理
- r语言 rep(c(1 3) 4),不倒翁-R语言入门系列4-rep函数的用法
- 为什么博途V17及以下的HMI面板不能与1500固件版本2.9或1200版本4.5 的CPU建立连接?
- 请求的操作需要提升 windows7 route add命令 windows7添加路由
- 网易开源分布式存储系统 Curve,性能彪悍
- 高匿代理,混淆代理,匿名代理,透明代理略解
- Zero-Shot相关论文阅读报告
- 一带一红网红基地推出O2O网红直播过年模式
- Altium Designer,PCB处理最后GND以及铺铜经验
- js贺卡_贺卡病毒许可证
- PCB设计铜铂厚度、线宽和电流关系
热门文章
- 记一次死锁问题的排查和解决
- Ubuntu设置squid代理
- php中读取大文件实现方法详解
- 老平台已死,整理个文档留下做纪念
- 团队角色测试(结果分析已公布)
- ASP.NET-------字符串和字节数组转换
- python3.6 django部署_Centos7 django+uwsgi+nginx+python3.6.8部署
- linux export_symbol 变量,linux EXPORT_SYMBOL
- 扫描到服务器的文件在哪个文件夹,云服务器的文件在哪个文件夹
- 06540计算机网络考试大纲,2020年自考06540计算机网络基本原理复习资料(7)