LeetCode 22 括号生成

题目描述

括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]

提示:

  • 1 <= n <= 8

解法

思路:回溯 + 递归

  • 假如需要成成n对括号,那么一定是有n个左括号和n个右括号,依次往字符串里加指定括号,统计左右括号的数量
  • 结束条件:当前左右括号都有大于 0 个可以使用的时候,才继续递归
  • 右括号剩余数量严格大于左括号剩余数量,才可以继续递归;

java代码:

class Solution {public List<String> generateParenthesis(int n) {List<String> res = new ArrayList<>();if (n == 0) {return res;}// 回溯 + 递归backtrack("", n , n, res);return res;}/*** 递归函数:一直寻找下一个可能的括号** @param curStr 当前递归得到的结果* @param left   左括号还有几个可以使用* @param right  右括号还有几个可以使用* @param res    结果集*/private void backtrack(String curStr, int left, int right, List<String> res) {// 注意:因为每一次尝试,都使用新的字符串变量,所以无需回溯// 递归结束条件:如果左右括号可用数量都等于0了,则把字符串加到结果集if (left == 0 && right == 0) {res.add(curStr);return;}// 左括号可以使用的个数严格大于右括号可以使用的个数,不满足则结束递归if (left > right) {return;}if (left > 0) {backtrack(curStr + "(", left - 1, right, res);}if (right > 0) {backtrack(curStr + ")",  left, right - 1, res);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测绘资质人员培训与岗位管理制度

人员培训与岗位管理制度 建立健全人员培训与岗位管理制度&#xff0c;明确岗位职责、岗前培训考核、继续教育等要求

设 备 管 理

(1) 简单叙述设备管理的任务和功能。 解&#xff1a; 设备管理的主要任务包括&#xff1a; 响应用户进程提出的I/O请求&#xff0c;选择和分配I/O设备进行数据传输操作。控制I/O设备和CPU(或内存)之间进行数据交换&#xff0c;提高设备和设备之间、CPU和设备之间以及进程和进程…

实验三:路由器的管理与配置

实验目的&#xff1a; 了解路由器的作用熟悉路由器的基本配置方法熟悉Packet Tracer 路由模拟软件的使用 实验环境&#xff1a; Windows 10 下的 Cisco Packet Tracer 实验内容&#xff1a; 熟悉Packet Tracer组件搭建实验拓扑 实验步骤&#xff1a; 1.连接设备 2.配置IP地…

开发常需要的好用API汇总

手机号码归属地&#xff1a;可根据手机号码查询其省市区、运营商区号行政区划代码等信息。 上亿条数据囊括最新的170、166、147等号段&#xff0c;更新及时、准确度高。二维码识别OCR&#xff1a;对图片中的二维码、条形码进行检测和识别&#xff0c;返回存储的文字内容。短信验…

【Linux】解释为什么“I/O 等待”的指标可能是误导的。

解释为什么“I/O 等待”的指标可能是误导的。 I/O等待指标是用来衡量I/O子系统性能的重要指标之一&#xff0c;它表示等待I/O操作完成的时间。然而&#xff0c;I/O等待指标有时可能会误导&#xff0c;原因如下&#xff1a; I/O操作类型&#xff1a;I/O等待指标不能告诉我们实…

python定义代码块的符号,python中代码块所属关系

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python中代码块所属关系的语法&#xff0c;python定义代码块的符号&#xff0c;今天让我们一起来看看吧&#xff01; 本文章主要用于平时Python3学习和使用中积累的比较常用的代码块。代码都是经过验证可行的python简单…

深度学习计算数据集里所有图像像素点的均值方差

代码怕忘记&#xff0c;现在贴上来&#xff0c;以防丢失 from torch.utils.data import DataLoader from torchvision.datasets import ImageFolder import torch from torchvision import transformsdef get_mean_and_std(data_path, in_chans3):dataset ImageFolder(rootda…

RocketMQ常见问题分析

目录 1. RocketMQ如何保证消息不丢失 1.1 分析消息丢失场景 1.2 解决方案 1.2.1 保证消息生产不丢失 1.2.1.1 生产消息时不使用单向发送消息发送模式 1.2.1.2 生产者使用事务消息机制 1.2.2 保证消息存储不丢失 1.2.3 保证消息消费不丢失 1.2.4 RocketMQ特有的问题&…

4.8 【共享源】流的消费者

一,什么是流的消费者? 消费者从生产者那里获取内容,以进行下一步的处理。 消费者从生产者那里获取内容,并对其进行某种形式的处理(例如图像处理、合成)。它最终也可以显示来自生产者的内容。 通常,我们需要在消费者应用程序中执行接下来的步骤,以从生产者那里获取内…

Echarts legend属性使用

Echarts的legend属性是对图例组件的相关配置 而legend就是Echarts图表中对图形的解释部分&#xff1a; 其中legend自身常用的配置属性如下&#xff1a; orient 设置图例的朝向 属性值&#xff1a; vertical // 垂直显示 或者 horizontal // 水平显示 legend: {orient: ver…

Pandas有了平替Polars

Polars是一个Python数据处理库&#xff0c;旨在提供高性能、易用且功能丰富的数据操作和分析工具。它的设计灵感来自于Pandas&#xff0c;但在性能上更加出色。 Polars具有以下主要特点&#xff1a; 强大的数据操作功能&#xff1a;Polars提供了类似于Pandas的数据操作接口&am…

涵盖多种功能,龙讯旷腾Module第七期:超快动力学过程

Module是什么 在PWmat的基础功能上&#xff0c;我们针对用户的使用需求开发了一些顶层模块&#xff08;Module&#xff09;。这些Module中的一部分是与已有的优秀工具的接口&#xff0c;一部分是以PWmat的计算结果为基础得到实际需要的物理量&#xff0c;一部分则是为特定的计…

Zama TFHE-rs

1. 引言 前序博客见&#xff1a; 基于[Discretized] Torus的全同态加密指引&#xff08;1&#xff09;基于[Discretized] Torus的全同态加密指引&#xff08;2&#xff09;TFHE——基于[Discretized] Torus的全同态加密 代码解析 开源代码见&#xff1a; https://github.co…

ctf web赛道基础 万字笔记

一、SQL注入&#xff08;mysql&#xff09;&#xff1a; 基本语法 判断列数 order by 3 查询所有数据库&#xff1a; select group_concat(schema_name) from information_schema.schemata 查询当前数据库的所有表&#xff1a; select group_concat(table_name) from informa…

12.鸿蒙HarmonyOS App(JAVA) page的隐式跳转

跳转到指定Page的指定AbilitySlice MainAbilitySlice按钮触发事件&#xff1a; btn.setClickedListener(component -> { Intent _intent new Intent(); Operation operation new Intent.OperationBuilder() .withBundleName(…

关于Windows11画图板出现马赛克问题

参考博客链接: Win11新版画图板问题 一、问题描述 新版win11画图板使用橡皮擦&#xff0c;或者框选图片会出现这种马赛克的问题 二、问题解决 1.先点击 “层” 2.点击 “” 3.点击出现的这个层 现在就可以正常的使用画图板啦 如果想要取消右边的那一栏&#xff0c;…

c#生成临时文件

/// <summary> /// 生成临时文件 /// </summary> /// <param name"tmpDirectory">临时文件目录</param> /// <param name"fs">临时文件流&#xff08;该流会被关闭&#xff09;</param&…

git上传代码到新建的空白项目

git上传代码到新建的空白项目 打开命令行终端或者Git Bash 进入到项目目录 初始化一个新的git仓库&#xff1a;git init 将代码添加到git仓库 4.1 使用 git add命令将代码文件添加到暂存区: git add . (. 表示添加当前目录下的所有文件&#xff0c;也可以指定具体的文件名)4…

git集成github(二)-- 遇见的问题与解决方法

1、share project on github时&#xff0c;弹出Cannot load information for github.com/zouxiaoya:Connection reset问题。 解决方法&#xff1a;pycharm-->setting-->version control-->github中&#xff0c;删除掉当前用户&#xff0c;点击reset重置即可。 2、 pus…

JavaScript中的prototype和_proto_的关系是什么

JavaScript中的prototype和_proto_的关系是什么 __proto__ 是 JavaScript 中对象的一个内部属性&#xff0c;它指向该对象的原型。JavaScript 中每个对象都有一个 __proto__ 属性&#xff0c;通过它可以访问对象的原型。prototype 是函数对象特有的属性&#xff0c;每个函数都…