当前位置:网站首页>每日一题-括号生成-0721
每日一题-括号生成-0721
2022-08-05 05:17:00 【菜鸡程序媛】
题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
- 输入:n = 3
- 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]
思路
- 采用深度优先遍历的方式,先把左括号消耗完,再匹配右括号;右括号走到头的时候,开始回溯
- 当left>right的时候,记得剪枝(因为左括号肯定是先出现的)
代码
public List<String> generateParenthesis(int n) {
List<String> res = new LinkedList<>();
if(n <= 0)
return res;
recur(n, n, new StringBuilder(), res);
return res;
}
private void recur(int left, int right, StringBuilder sb, List<String> res){
if(left == 0 && right == 0){
res.add(sb.toString());
return;
}
// 这个时候要剪枝
if(left > right)
return;
if(left > 0){
sb.append('(');
recur(left - 1, right, sb, res);
sb.deleteCharAt(sb.length() - 1); // 回溯
}
if(right > 0){
sb.append(')');
recur(left, right - 1, sb, res);
sb.deleteCharAt(sb.length() - 1);
}
}
边栏推荐
猜你喜欢
随机推荐
教你如何封装功能组件和页面组件
【nodejs】第一章:nodejs架构
IT系统运行维护方法及策略
如何组织一场安全、可靠、高效的网络实战攻防演习?
Machine Learning (1) - Machine Learning Fundamentals
Thread handler handle IntentServvice handlerThread
网络通信及相关函数介绍
LeetCode刷题之第530题
CVPR best paper winner Huang Gao's team from Tsinghua University presented the first dynamic network review
Detailed explanation of BroadCast Receiver (broadcast)
用GAN的方法来进行图片匹配!休斯顿大学提出用于文本图像匹配的对抗表示学习,消除模态差异!
电子产品量产工具(4)-UI系统实现
C语言查看大小端(纯代码)
【UiPath2022+C#】UiPath 循环
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
【Multisim仿真】直流稳压电源设计报告
(C语言)动态内存管理
LeetCode刷题之第74题
ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!
OSPF故障排除办法









