文章目录

  • 题目
  • 题解

题目

题目来源: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++题解]:贪心相关推荐

  1. Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)

    801. 使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元 ...

  2. LeetCode 1653. 使字符串平衡的最少删除次数(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,它仅包含字符 'a' 和 'b'​​​​ . 你可以删除 s 中任意数目的字符,使得 s 平衡 . 我们称 s 平衡的 当不存在下标 ...

  3. leetcode - 801. 使序列递增的最小交换次数

    解题思路:使用两个状态量来存储信息: swap[i]表示交换A和B中第i个数字,A和B中前i个数字达到严格递增所需要的最小交换次数. keep[i]表示不交换A和B中第i个数字,A和B中前i个数字达到 ...

  4. LeetCode 801. 使序列递增的最小交换次数(动态规划)

    1. 题目 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元素之后,数组 A 和 B ...

  5. LeetCode 1864. 构成交替字符串需要的最小交换次数

    文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 . 请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1 . 交替字符 ...

  6. leetcode算法题--使序列递增的最小交换次数★

    原题链接:https://leetcode-cn.com/problems/minimum-swaps-to-make-sequences-increasing/ 动态规划 dp[0]表示若当前位置不 ...

  7. Leetcode1703. 得到连续 K 个 1 的最少相邻交换次数[C++题解]:难(货仓选址加强版+滑动窗口+前缀和)

    文章目录 题目分析 题目链接 题目分析 首先需要明确一点:最优结果中1的相对位置和开始时不会改变.否则的话就是交换两个1,会徒劳增加交换次数. 比如[1,0,0,0,0,0,1,1],最后变成[0,0 ...

  8. 第九届 蓝桥杯 决赛 交换次数

    问题描述 IT产业人才需求节节攀升.业内巨头百度.阿里巴巴.腾讯(简称BAT)在某海滩进行招聘活动. 招聘部门一字排开.由于是自由抢占席位,三大公司的席位随机交错在一起,形如: ABABTATT,这使 ...

  9. POJ 3270-Cow SortingA(Polya定理-交换次数)

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7309   Accepted: 2874 Descr ...

最新文章

  1. 青源 LIVE 预告 | 北大王一飞:高效 GAN 采样算法 (ECML 最佳论文解读)
  2. 跟我学jQuery(三) 无所不能的选择器1
  3. 【直播预告】第四范式Intel AI应用与异构内存编程挑战赛专场活动开启报名
  4. UILabel 宽高自适应
  5. 医疗行业的售前工程师如何撰写人工智能案例申请材料
  6. 监听 html dom 变化,js怎么监听元素属性变化
  7. newifi3高恪魔改最新_12.08达达最新球球id账号呆瓜表
  8. lua学习 第二章数据与标准库
  9. 用eclipse创建Java项目(以一个初学者的角度全面教学)
  10. PostgreSQL存储过程BEGIN块的事务处理
  11. r语言 rep(c(1 3) 4),不倒翁-R语言入门系列4-rep函数的用法
  12. 为什么博途V17及以下的HMI面板不能与1500固件版本2.9或1200版本4.5 的CPU建立连接?
  13. 请求的操作需要提升 windows7 route add命令 windows7添加路由
  14. 网易开源分布式存储系统 Curve,性能彪悍
  15. 高匿代理,混淆代理,匿名代理,透明代理略解
  16. Zero-Shot相关论文阅读报告
  17. 一带一红网红基地推出O2O网红直播过年模式
  18. Altium Designer,PCB处理最后GND以及铺铜经验
  19. js贺卡_贺卡病毒许可证
  20. PCB设计铜铂厚度、线宽和电流关系

热门文章

  1. 记一次死锁问题的排查和解决
  2. Ubuntu设置squid代理
  3. php中读取大文件实现方法详解
  4. 老平台已死,整理个文档留下做纪念
  5. 团队角色测试(结果分析已公布)
  6. ASP.NET-------字符串和字节数组转换
  7. python3.6 django部署_Centos7 django+uwsgi+nginx+python3.6.8部署
  8. linux export_symbol 变量,linux EXPORT_SYMBOL
  9. 扫描到服务器的文件在哪个文件夹,云服务器的文件在哪个文件夹
  10. 06540计算机网络考试大纲,2020年自考06540计算机网络基本原理复习资料(7)