首页 > 其他分享 >力扣 22. 括号生成

力扣 22. 括号生成

时间:2024-03-10 18:22:05浏览次数:21  
标签:22 backtrack int res 力扣 括号 max path open

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

示例 1:

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

示例 2:

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

class Solution {     public List<String> generateParenthesis(int n) {         List<String> res = new ArrayList<>();         StringBuilder path = new StringBuilder();         backtrack(res, path, 0, 0, n);         return res;     }
    private void backtrack(List<String> res, StringBuilder path, int open, int close, int max) {         if (path.length() == max * 2) {             res.add(path.toString());             return;         }         if (open < max) {             backtrack(res, path.append("("), open + 1, close, max);             path.deleteCharAt(path.length()-1);         }         if (close < open) {             backtrack(res, path.append(")"), open, close + 1, max);             path.deleteCharAt(path.length()-1);         }     } }

标签:22,backtrack,int,res,力扣,括号,max,path,open
From: https://www.cnblogs.com/JavaYuYin/p/18064547

相关文章

  • Ubuntu 22.04内核代码下载、编译、调试
    1下载Ubuntu Kernel参考《Kernel/Dev/KernelGitGuide-UbuntuWiki》,下载Ubuntu22.04代码:gitclonehttps://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy2修改、编译、安装UbuntuKernel参考《Kernel/BuildYourOwnKernel-UbuntuWiki》。......
  • 郑莉cpp例6-22 浅层复制与深层复制
    浅层复制与深层复制浅层复制并没有形成真正的副本,存在两个对象共用同一块内存空间而导致执行析构函数时,该空间被两次释放,导致运行错误。深层复制则实现,复制之后,两个对象不互相影响。#include<iostream>usingnamespacestd;#include<cassert>classPoint{public:P......
  • 【力扣】排列问题(回溯法)
    问题描述排列问题的难点在于排列要求有序,并且在写的时候发现,如何在选择后面的元素后回过头去选择前面的元素,这是很难处理的,在前面的组合问题中,我们都是用startindex来处理,而在这里就行不通了。容易想到的一种解决方法就是另外设置一个与nums长度相同的used数组来记录元素的遍历......
  • 【力扣】非递减子序列
    题目代码如下:classSolution{public:vector<vector<int>>res;vector<int>path;booloccured(vector<int>&nums,intkey,intstartindex){for(inti=startindex;i<key;i++){if(nums[key]==nums[i]){......
  • 【力扣】子集II(回溯法)(排序函数的一种隐藏用法?)
    题目描述可以套回溯模版的题,但是在写的过程中发现,如果数组中有多个相同元素分散存在的话,就会有一些子集无法得到像这里的1,4,4,如果对数组从左到右枚举的话是无论如何都得不到的。对这样的数组使用排序函数后,造成的效果就是相同的元素都堆在了一起,这样就能正确地得到所有子集......
  • MYSQL学习笔记22: 多表查询
    多表查询单表查询查询emp表select*fromemp;查询dept表select*fromdept;笛卡尔积(全组合)#emp表有4条记录,dept表有6条记录#笛卡尔积有4*6=24条记录select*fromemp,dept;消除无效的笛卡尔积(emp和dept通过dept_id连接)select*fromemp,deptw......
  • 代码随想录 第十六天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树
    leetcode:104.二叉树的最大深度-力扣(LeetCode)思路:递归判断每次左右节点的是否存在,存在自然加一,return的1就是这样,判断子节点的左右两端是否有节点,统计有的节点数量,也就是左右的高度classSolution{publicintmaxDepth(TreeNoderoot){//后序遍历if......
  • 【力扣】复原IP地址(回溯法)(分割问题)
    问题描述在这个题中,因为结果的数据类型为vector<string>所以直接在s中添加分割点比较方便,先看一下代码:classSolution{private:vector<string>result;//记录结果//startIndex:搜索的起始位置,pointNum:添加逗点的数量voidbacktracking(string&s,intst......
  • ubuntu22.04编译创龙T113-i mini的SDK
    ubuntu版本22.04.11.解压安装包拷贝sdk并解压出来,注意安装包较大请预留好硬盘空间2.预安装编译应用先安装如下应用,在编译过程中需要使用到的依赖sudoaptinstallbuild-essentialcmakeflexbisonu-boot-toolsopenssllibssl-devtexinfo3.安装和更换python2编译使......
  • 代码随想录 第十五天 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 感
    leetcode:102.二叉树的层序遍历-力扣(LeetCode)思路:用队列长度控制弹栈的多少,不等于空时获取root,因为传了一个根肯定是1,接下来找左右节点,将根节点弹出,获取下一次的size,一直到空。。。//102.二叉树的层序遍历classSolution{publicList<List<Integer>>resList=newA......