
LeetCode301:回溯中的枚举
统计括号数量:首先遍历字符串,统计左括号和右括号的数量。 深度优先搜索(DFS):使用递归的方式处理每个字符,尝试删除或保留括号,并记录当前的状态(剩余的左括号和右括号数量)。 剪枝优化:在递归过程中记录已经处理过的状态,避免重复计算,提高效率。 收集结果:每当找到一个有效的括号序列时,将其添加到结果集合中。 统计括号数量:遍历字符串,统计左括号和右括号的数量。 DFS函数:定义一个递归函数 剪枝优化:使用 收集结果:当递归结束时,检查是否形成了一个有效的括号序列,如果是,将其添加到结果集合中。 返回结果:将结果集合转换为列表返回。
发布日期:2021-05-07 14:08:13
浏览次数:21
分类:精选文章
本文共 1717 字,大约阅读时间需要 5 分钟。
为了解决删除最小数量的无效括号并返回所有可能结果的问题,我们可以使用深度优先搜索(DFS)来探索所有可能的删除组合。以下是详细的解决方案:
方法思路
这种方法确保了我们能够探索所有可能的删除组合,并找到所有有效的括号序列。
解决代码
class Solution: def removeInvalidParentheses(self, s: str) -> List[str]: n = len(s) left_count = 0 right_count = 0 for c in s: if c == '(': left_count += 1 elif c == ')': right_count += 1 result = set() def dfs(index, left, right, current, visited): state = (left, right) if state in visited: return visited.add(state) if index == n: if left == 0 and right == 0: result.add(current) return c = s[index] if c == '(': if left > 0: dfs(index + 1, left - 1, right, current + c, visited) dfs(index + 1, left, right, current, visited) elif c == ')': if right > 0: dfs(index + 1, left, right - 1, current + c, visited) dfs(index + 1, left, right, current, visited) else: dfs(index + 1, left, right, current + c, visited) dfs(0, left_count, right_count, "", set()) return list(result)
代码解释
dfs
,处理当前字符,尝试保留或删除括号,并递归处理下一个字符。visited
集合记录已处理过的状态,避免重复计算。这种方法确保了我们能够高效地找到所有可能的有效括号序列,并返回它们。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月07日 08时45分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
NAT工作原理
2019-03-05
Processes, threads and goroutines
2019-03-05
c++中的10种常见继承
2019-03-05
使用 dlv 调试 golang 程序
2019-03-05
语义化版本编号(Semantic Versioning)
2019-03-05
E28 LoRa模块透传 定点传输 RSSI测试与MicroPython应用
2019-03-05
删除git分支指令 git branch -d
2019-03-05
抽离css文件
2019-03-05
babel预设、插件和webpack中运行
2019-03-05
Vue学习—深入剖析渲染函数
2019-03-05
Vue学习—深入剖析函数式组件
2019-03-05
基于selenium的分布式爬虫-微浏览器
2019-03-05
网络编程一 tcp的一些信号处理
2019-03-05
简单Makefile的编写
2019-03-05
使用BAT批处理 匹配查找指定文件夹,并在当文件夹下创建空文件
2019-03-05
VS2017运行任意多线程的c++程序,VS2017闪退问题
2019-03-05
wxpython的Hello,World代码探索
2019-03-05
IDEA出现错误:找不到或无法加载主类 io.xxx.XXXApplication
2019-03-05
ubuntu16.04 配置中文输入
2019-03-05