首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【leetcode刷题】T65-括号生成

【leetcode刷题】T65-括号生成

作者头像
木又AI帮
修改于 2019-07-18 02:12:49
修改于 2019-07-18 02:12:49
34200
代码可运行
举报
文章被收录于专栏:木又AI帮木又AI帮
运行总次数:0
代码可运行

【题目】

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 n = 3,生成结果为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

【思路】

什么是有效的括号?可以参考【T19-有效的括号】。

可以这样理解:从左往右对元素进行计数,左括号的个数始终大于等于右括号的个数。

有一个很自然的想法,使用递归,使用变量left和right分别存储左括号和右括号剩余可用个数,当left>0,继续递归(left-1);当right>left,继续递归(right-1);当left和right都为0,满足条件,加入结果。

【代码】

python版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution(object):
    def loop(self, sub, res, left, right):
        if left ==  and right == :
            res.append(sub)
            return
        # 还有左括号
        if left > :
            self.loop(sub+'(', res, left-1, right)
        # 右括号数大于左括号数
        if right > left:
            self.loop(sub+')', res, left, right-1)

    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        res = []
        self.loop('', res, n, n)
        return res

C++版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        loop("", res, n, n);
        return res;
    }

    void loop(string s, vector<string>& res, int left, int right){
        if(left ==  && right == ){
            res.push_back(s);
            return ;
        }
        // 还有左括号
        if(left > )
            loop(s + "(", res, left-1, right);
        // 右括号数大于左括号数
        if(right > left)
            loop(s + ")", res, left, right-1);
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Server SAN_Windows存储卷设备
目前,实现云环境中数据的高效存储是云计算提供服务的基本要求。云计算和云存储已经成为提供信息和在线功能的首选方法。
全栈程序员站长
2022/11/17
1.8K0
Server SAN_Windows存储卷设备
2分钟时间快速了解存储的基础知识
在计算机系统中存储分为外部存储和内部存储,这里我们谈存储主要指计算机系统中的外部存储。
网络技术联盟站
2020/05/26
9410
精!存储知识,网络工程师必学!
存储就是根据不同的应用环境通过采取合理、 安全、有效的方式将数据保存到某些介质上并能保证有效的访问.
网络技术联盟站
2021/07/02
7930
存储技术架构总览
现有的存储系统经过长期发展,种类及其繁多,架构也各不相同,仅靠一文不可能讲得完全详尽。笔者试图在各个存储系统中,按照从底层到上层的思路,抽象出某些共性,也就是:物理层、协议层、架构层、连接层四个层次。这种层次划分不一定对所有存储系统通用,但可以帮助初学者对市面上主流的存储技术架构建立一个大体的认识,接下来我们由下往上详细分析。
存储小白
2021/11/03
1.3K0
【信管1.5】计算机网络基础(三)网络存储与网络接入
大家不要急,网络这一块是非常重要的内容,所以我们的学习还要继续。在上一篇文章中简单地学习到了 IP 的一些基础知识。其实在网络中最底层也是最核心的东西我们就已经学完了。后面将要学习的内容都是比较偏应用一些了。今天,我们先来学习一下存储和网络接入技术这两个部分的内容。
硬核项目经理
2023/03/02
7930
【信管1.5】计算机网络基础(三)网络存储与网络接入
从技术架构角度分析存储系统的发展方向
现有的存储系统经过长期发展,种类及其繁多,架构也各不相同,按照从底层到上层的思路,大致可以分为:物理层、协议层、架构层、连接层四个层次。接下来我们由下往上详细分析。
存储小白
2022/04/06
7330
网工,包里可以没有烟,但一定学会这三大存储技术!
在企业数据管理领域,选择合适的存储解决方案对于确保数据的可访问性、安全性和性能至关重要。目前主流的存储技术主要有三种:直接附加存储(Direct Attached Storage,DAS)网络附加存储(Network Attached Storage,NAS)存储区域网络(Storage Area Network,SAN)
ICT系统集成阿祥
2024/12/03
1740
网工,包里可以没有烟,但一定学会这三大存储技术!
为什么需要存储?
信息是人类认知外界的方式,最初的信息都会对应到现实世界的一个客体或者相关描述。人类是通过不断增加、完善信息来接触、认知并改变世界的。
存储小白
2021/08/06
1.6K0
为什么需要存储?
老码农眼中的存储
存储,是我们码农每天都要打交道的事情,而当我们面对RAID,SAN,对象存储,分布式数据库等技术的时候,又往往似是而非,存储成了我们熟悉的陌生人。
半吊子全栈工匠
2018/08/22
8620
老码农眼中的存储
100TB大数据存储方案
Hive Hbase 存储介质: https://www.zhihu.com/question/46392643?sort=created 请问,在家里攒一套 100TB-200TB 的存储有什么架构
全栈程序员站长
2022/11/08
1.4K0
块存储,文件存储及对象存储 比较
本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景。 通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。 一. 块存储:DAS,SAN 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。
Freedom123
2024/03/29
1.8K0
块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别[通俗易懂]
https://blog.csdn.net/enweitech/article/details/51445087
全栈程序员站长
2022/09/01
14.5K0
关于存储技术的最强入门科普
哈哈,没错,我们现在处于信息时代,每天都在和电脑、手机打交道。我们的工作和生活,已经完全离不开视频、音乐、图片、文本、表格这样的数据文件。
鲜枣课堂
2020/08/04
1.9K0
关于存储技术的最强入门科普
存储虚拟化概述「建议收藏」
存储虚拟化(Storage Virtualization)最通俗的理解就是对存储硬件资源进行抽象化表现。典型的虚拟化包括如下一些情况:屏蔽系统的复杂性,增加或集成新的功能,仿真、整合或分解现有的服务功能等。虚拟化是作用在一个或者多个实体上的,而这些实体则是用来提供存储资源或/及服务的。
全栈程序员站长
2022/07/28
1.6K0
存储虚拟化概述「建议收藏」
【愚公系列】软考高级-架构设计师 029-其他网络知识(网络存储技术)
网络存储技术是指使用网络连接的方式,将数据存储在网络连接的设备上,使得数据可以从网络上的任何连接点进行存取和管理。这种技术允许多个用户和应用程序通过网络共享存储资源,从而提高数据访问效率和灵活性。
愚公搬代码
2024/06/16
2170
云计算——常见存储类型
云计算虚拟化场景下的本地磁盘是指使用服务器本地的磁盘资源,经过RAID(磁盘阵列)化后提供给虚拟化平台进行使用。
网络豆
2023/10/17
8380
云计算——常见存储类型
存储基础:DAS/NAS/SAN存储类型及应用
一. 硬盘接口类型 1. 并行接口还是串行接口 (1) 并行接口,指的是并行传输的接口,比如有0~9十个数字,用10条传输线,那么每根线只需要传输一位数字,即可完成。 从理论上看,并行传输效率很高,但是由于线路上的物理原因,它的传输频率不能太高,所以实际的传输速度并不和并行度成正比,甚至可能更差。 (2) 串行接口,指的是串行传输的接口,同样是0~9十个数字,用1条传输线,那么需要传输10次,才可以完成。 从理论上看,串行传输效率不高,但是由于它的数据准确性,高频率的支持,使得传输速度可以很高。 (3) 并
小小科
2018/05/02
3.6K0
存储基础:DAS/NAS/SAN存储类型及应用
RAID出故障如何做好应急处理
当RAID出现: 1、RAID控制台里描述超过允许范围内的盘数异常,如RAID0里一块以上盘异常;RAID5(无热备)里2块以上盘异常;异常表现为OFFLINE或DDD、BAD等;2、服务器存储系统报警(喇叭或警示灯);3、系统无法识别RAID 逻辑硬盘等问题时,现场工程师应该如何操作才能挽救数据呢?(此方案适用 IBM、HP、SUN、DELL、DFT、APPLE、联想、方正等品牌服务器;RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、HP ADG、RAID10、RAID50、RAID1E、RAID5E、RAID5EE等;NAS、DAS、SAN等。)
北亚数据安全与救援
2021/04/07
2K0
RAID出故障如何做好应急处理
基于Ceph对象存储构建实践
直接附加存储(Directed Attached Storage,DAS)作为一种最简单的外接存储方式,通过数据线直接连接在各种服务器或客户端扩展接口上。它本身是硬件的堆叠,不带有任何存储操作系统,因而也不能独立于服务器对外提供存储服务。DAS常见的形式是外置磁盘阵列,通常的配置就是RAID控制器+一堆磁盘。DAS安装方便、成本较低的特性使其特别适合于对存储容量要求不高、服务器数量较少的中小型数据中心。
宜信技术学院
2020/05/20
8300
存储类型类别及文件系统
[TOC] 0x01 基础信息 描述:本文主要针对以下方面的进行记录学习 (1) 对象存储、文件存储和块存储介绍与区别? (2) 0x02 多种存储类型差异 Q:对象存储、文件存储和块存储介绍?
全栈工程师修炼指南
2022/09/29
9550
相关推荐
Server SAN_Windows存储卷设备
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验