LeetCode 301. Remove Invalid Parentheses C++

LeetCode301——删除无效的括号 我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/remove-invalid-parentheses/ 题目描述: 知识点:回溯 思路一:回溯法(用栈来判断括号是否匹配) 由于没有任何剪枝操作,该回溯过程穷举了所有可能的情形,时间复杂度是O(2 ^ n)... 阅读详情

Problem

题目链接

Solution

题意为,给定一个字符串,让你移除最少的不合法的括号,让剩下的字符串合法,所给的字符串中可能含有(、)之外的字符。返回所有合法的字符串。

这题个人感觉比较难,ac前参考了很多别人的博客。

做这题时,我们需要明确以下几个事情:

1、如何判断一个括号字符串是否合法?一个长度为n的字符串下标为0~n-1,那么对于任何一个0 ~n-2上的字符,都需要保证左括号的数量>=右括号的数量,否则就是不合法的;在n-1上,如果左括号数量=右括号数量,那么这个串最终就是合法的,否则就是不合法的。

2、如何判断最少的不合法括号?方法是,从左到右遍历字符串,记录整个字符串里不合法的左括号数量、不合法的右括号数量。(这条为什么成立我也还没弄明白)

3、由第2条得到的左右括号不合法数量去删除,先删不合法的右括号,再删不合法的左括号,可以达到搜索剪枝的目的。

搞清了以上,那么就可以用深搜来搜索所有的可能性,把移除数为最少且剩下的合法字符串加入最终结果中。

class Solution {
public:
    vector<string> removeInvalidParentheses(string s) {
        
        int n=s.size();
        if(!n) return {""};
        
        int l=0,r=0;
        for(auto ch:s){
            if(ch=='(') ++l;
            else if(ch==')'){
                if(l==0) ++r;
                else --l;
            }
        }
        
        vector<string> ans;
        dfs(s,0,l,r,ans);
        return ans;
    }
private:
    bool check(string s){
        int cnt=0;
        for(auto ch:s){
            if(ch=='(') ++cnt;
            else if(ch==')') --cnt;
            if(cnt<0) return false;
        }
        return cnt==0;
    }
    
    void dfs(string &s,int pos,int l,int r,vector<string> &ans){
        if(l==0&&r==0&&check(s)) {
            ans.push_back(s);
            return;
        }
        for(int i=pos;i<s.size();++i){
            if(i>pos&&s[i-1]==s[i]) continue;
            
            if(s[i]==')'){
                string curr=s;
                curr.erase(i,1);
                if(r>0) dfs(curr,i,l,r-1,ans);
            }else if(s[i]=='('){
                string curr=s;
                curr.erase(i,1);
                if(l>0) dfs(curr,i,l-1,r,ans);
            }
        }
    }
};
我是如何让爬虫在小红书风控下“偷数据”的?xhs爬虫这些骚操作你可能想不到 最绝的是,他们连评论区都做了动态加载,第一页显示20条评论,再往下滑就变成“加载失败”,实际上得模拟真人反复上滑下滑才能触发完整加载。上个月我们团队帮一家美妆品牌抓竞品爆款笔记,刚开了10个爬虫账号,结果5分钟不到,系统直接弹窗警告“检测到非正常操作”——后来发现,问题出在Wi-Fi上。小红书的风控每周都在升级,上周还能用的方案,这周可能就得重写。但要是想大规模采集,比如监控竞品爆文、分析用户画像,劝你先算笔账:光是一个能抗封的账号矩阵,每月成本就得烧掉几万块,更别说还得养团队随时应对系统升级。 阅读详情

相关推荐

深入SVT SPI VIP配置:如何灵活控制CS间隔、数据帧大小与时钟频率(含代码片段)

本文深入探讨了SVT SPI VIP的高级配置技巧,包括精确控制CS信号间隔、突破数据帧大小限制以及动态时钟频率切换。通过实战代码片段和详细配置步骤,帮助验证工程师灵活应对复杂SPI协议验证场景,提升验证效率和覆盖率。特别适合需要处理非标准SPI时序和特殊数据帧的芯片验证项目。

weixin_27014595的博客 280

LeetCode—301. 删除无效的括号(Remove Invalid Parentheses)——分析及代码(C++)

1. 逐个删除多余括号(1)思路先从左往右遍历,并删除多余的右括号。设计两个下标指针,分别记录最后删除元素的位置和最后遍历元素的位置。当右括号多于左括号时,从最后删除元素的位置到当前位置左侧依次寻找可删除的右括号并删除后,更新两个下标指针,对新字符串递归处理。可通过限制只能从最后删除元素的位置 或 左侧不为右括号的位置删除,避免出现重复解。由于每个可能删除的位置都会遍历到,通过递归可以得到全部可行解。处理完右括号后,对字符串进行反向,同样方法处理左括号,得到所求答案。(3)结果 执行用时 :0 ms, 在所

江南土豆的博客 865

多核系统核间通信(IPC)设计:从硬件机制到软件实现

在多核处理器与嵌入式系统设计中,核间通信(IPC)是实现计算资源协同工作的核心技术。其原理基于共享内存、硬件邮箱与中断等底层硬件机制,通过构建结构化的消息传递通道,实现核间高效、可靠的数据交换。该技术的核心价值在于打破多核间的壁垒,将分散的计算单元整合为有机整体,从而显著提升系统整体性能与响应能力。在工程实践中,IPC广泛应用于智能座舱、边缘AI网关、实时控制系统等场景,用于处理如仪表显示、AI推理、实时控制等复杂任务。本文聚焦于基于共享内存与VRING的消息队列实现,深入剖析缓存一致性、内存屏障等关键问题

weixin_27006759的博客 594

C++ | Leetcode C++题解之第301题删除无效的括号

C++ | Leetcode C++题解之第301题删除无效的括号

Ddddddd_158的博客 355

晶圆测试(Wafer Sort)的核心技术与良率提升策略

晶圆测试(Wafer Sort)是芯片制造中的关键“入学考试”,通过探针台与自动测试设备(ATE)对晶圆上的芯片进行功能与参数测试,筛选不合格芯片以控制成本。本文深入解析了其核心技术,包括自动化视觉系统对准、测试流程优化策略,并探讨如何利用测试数据驱动良率提升,展望了DFT与AI智能测试的未来趋势。

e4f5g6h的博客 515

从零构建FOC:手把手教你实现无刷电机磁场定向控制

本文是一份详尽的FOC(磁场定向控制)实战教程,指导开发者从零开始构建无刷电机驱动系统。文章深入解析了FOC的核心算法,包括坐标变换(Clarke/Park)、SVPWM调制和双环PI控制,并对比了有感与无感方案的实现差异。通过分步调试指南,帮助读者亲手实现稳定、高效的无刷电机控制,彻底掌握其底层原理。

h3i4j的博客 514

leetcode 301-400简单题 (python和c++)

我们还可以使用一种较为取巧的做法。在题目给定的 32 位有符号整数的范围内,最大的 3 的幂为 3 =1162261467。我们只需要判断 n 是否是 3 的约数即可。与方法一不同的是,这里需要特殊判断 n 是负数或 0 的情况。

活蹦乱跳的铬元素 309

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 806

[leetcode] 301. Remove Invalid Parentheses 解题报告

题目链接:https://leetcode.com/problems/remove-invalid-parentheses/ Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note: The

小榕流光的专栏 9340

A2B音频总线在智能座舱中的应用

车载A2B链路音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进、功能丰富的信息娱乐功能以满足消费者的用户体验。但传统的模拟并行音频信号传输方式,难以在功能增加与整车轻量化(线缆的重量及成本减少)之间取得均衡。这时候就需要A2B音频总线了。A2B音频总线用于连接车辆中的音频设备,如麦克风(MIC)、功放(AMP)、多媒体主机(Head Unit)和T-BOX等。通过一条低成本的非屏蔽双绞线UTP,进行跨距

怿星科技的博客 3934

DSP TMS320F280049之CCS工程的建立(库函数版)

TMS320F280049 DSP是TI最新出的一款C2000系列的DSP,主频为100MHZ,功能较为强大,具有较多的片上模拟外设。这一节主要讲述如何新建F280049的CCS工程。 Step1.下载文件: 下载C2000Ware软件并安装。下载地址如下: http://www.ti.com.cn/tool/cn/C2000WARE?keyMatch=C2000Ware%2...

fanxianyan1993的博客 1万+

【Leetcode】301. Remove Invalid Parentheses

每层递归的时候都要保证已经append的括号序列是合法前缀,并且左右括号删掉的个数没有超过上面算出来的个数。是否成立,如果成立,则要将多余的左括号删掉。问最少删掉多少括号,返回删去括号之后的字符串的所有方案。是否成立,如果成立,说明当前遍历到的右括号一定要删掉,否则可以不删;是栈内左括号的个数),遇到右括号,如果栈里没有左括号,那么该右括号要删掉,从而。是要删的左右括号个数,想象有一个栈,遇到左括号就入栈(即。,算出至少要删除的左括号和右括号的数量。如果栈里有左括号,那么左括号出栈(即。

数学、算法爱好者的博客 339

R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

data+scenario+science+insight 3926

LeetCode-301. Remove Invalid Parentheses

Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note:The input string may contain letters other than the parentheses(and). ...

reigns的博客 312

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C++实现——Remove Invalid Parentheses

//去掉最少的括号,使得字符串合理匹配 /* Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.Note: The input string may contain letters other than the pa

硅谷 1086

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

leetcode 301 : Remove Invalid Parentheses

1、原题如下: Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.Note: The input string may contain letters other than the parentheses ( an

l3368bcttqnqn的博客 541

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Leetcode 301. Remove Invalid Parentheses

https://leetcode.com/problems/remove-invalid-parentheses/description/ Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. 又是一道经典题。 算法...

weixin_43476349的博客 156

[Leetcode] 301. Remove Invalid Parentheses 解题报告

题目: Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note: The input string may contain letters other than the parentheses

魔豆(Magicbean)的博客 847

[leetcode]301. Remove Invalid Parentheses

题目链接:https://leetcode.com/problems/remove-invalid-parentheses/#/description Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.

xiaocong1990的博客 366

leetcode 301. Remove Invalid Parentheses BFS遍历得到所有合法的括号字符串 + 很棒的做法

Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note: The input string may contain letters other than the parentheses ( and ).

JackZhangNJU的专栏 1047

[LeetCode] 301. Remove Invalid Parentheses 移除非法括号

Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note:The input string may contain letters other than the parentheses(and). ...

weixin_30267697的博客 160

leetcode:bfs: Remove Invalid Parentheses(301)

Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.Note: The input string may contain letters other than the parentheses ( and ).Examp

LandscapeMi 298

301 Remove Invalid Parentheses 删除无效的括号

删除最小数目的无效括号,使输入的字符串有效,返回所有可能的结果。注意: 输入可能包含了除 ( 和 ) 以外的元素。示例 :"()())()" -> ["()()()", "(())()"]"(a)())()" -> ["(a)()()", "(a())()"]")(" -> [""]详见:https://leetcode.com/problems/remove-invalid-p...

weixin_30245867的博客 185

DFS+回溯专题9 - leetcode282. Expression Add Operators/301. Remove Invalid Parentheses - Hard

282. Expression Add Operators 题目描述 给定一个字符串(仅包含数字0-9)和一个目标值,请在数字之间添加二元运算符:’+’、’-’ 和 ‘*’,使得运算结果为目标值。 例子 Example 1: Input: num = “123”, target = 6 Output: [“1+2+3”, “123”] Example 2: Input: num = “2...

libh的博客 254

LeetCode 301. 删除无效的括号

题目描述 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。 说明:输入可能包含了除(和)以外的字符。 示例 1: 输入: "()())()" 输出: ["()()()", "(())()"] 示例 2: 输入: "(a)())()" 输出: ["(a)()()", "(a())()"] 示例 3: 输入: ")(" 输出: [""] 问题分析...

yj_coder的博客 1062

【leetcode】301 删除无效的括号(回溯)

题目链接:https://leetcode-cn.com/problems/remove-invalid-parentheses/ 题目描述 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。 说明: 输入可能包含了除 ( 和 ) 以外的字符。 示例 1: 输入: "()())()" 输出: ["()()()", "(())()"] 示例 2: 输入: "(a)())()" 输出...

zjwreal 803
上一篇: LeetCode 581. Shortest Unsorted Continuous Subarray
下一篇: LeetCode 84. Largest Rectangle in Histogram C++ 单调栈
dongcl97
博客等级 码龄10年 3粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值