zoukankan      html  css  js  c++  java
  • LeetCode22:括号生成

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

    示例:

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

    采用回溯法,不断递归,在左括号数量不超过n时压入左括号,在右括号数量小于左括号时压入右括号,循环到底部就把产生的序列保存起来。

     1 class Solution {
     2 private:
     3     int len=0;
     4     vector<string> ret;
     5 public:
     6     vector<string> generateParenthesis(int n) {
     7         vector<char> cur;
     8         len=n;
     9         backtrace(0,0,cur);
    10         return ret;
    11     }
    12 
    13     void backtrace(int left, int right, vector<char> cur){
    14         if(left==len && right==len){
    15             string push="";
    16             for(auto it=cur.begin();it!=cur.end();it++)
    17                 push+=*it;
    18             //cout<<push<<endl;
    19             ret.push_back(push);
    20 
    21         }
    22         if(left<len){
    23             cur.push_back('(');
    24             backtrace(left+1,right,cur);
    25             cur.pop_back();
    26         }
    27             
    28         if(right<len && right<left){
    29             cur.push_back(')');
    30             backtrace(left,right+1,cur);
    31             cur.pop_back();
    32         }
    33         return ;
    34     }
    35 };

    其实可以直接声明string类型,string可以直接+或者push_back

  • 相关阅读:
    谈谈Vue.js——vue-resource全攻略
    XStream(xml/bean转换)
    Notepad++ xml/json格式化
    秒杀系统架构分析与实战
    Spring事务管理
    小程序思维导图(一)
    小程序思维导图(二)
    轻松搭建持续集成工具jenkins
    rep stos dword ptr es:[edi]
    关于dword ptr 指令
  • 原文地址:https://www.cnblogs.com/rookiez/p/13197958.html
Copyright © 2011-2022 走看看