zoukankan      html  css  js  c++  java
  • LeetCode-22. Generate Parentheses

    一、问题描述

      给一个数字n,求出所有可能的括号组合

      例子:给定数字n,输出如下

          ()()()
          ()(())
          (())()
          (()())
          ((()))

    二、问题解决

      关键在于理解什么样的括号顺序是正确的,如何用程序表示出来。右括号的数量不能大于左括号,依次遍历所有可能,选出符合的。

     

    void par(vector<string> &v, string str, int n, int m) {
        if (n == 0 && m == 0) {
            v.push_back(str);
            return;
        }
        if (m > 0) {
            par(v, str + ")", n, m - 1);
        }
        if (n > 0) {
            par(v, str + "(", n - 1, m + 1);
        }
    }
    vector<string> generateParenthesis(int n) {
        vector<string> result;
        par(result, "", n, 0);
        return result;
    }

    三、问题思考   

      本题可以结合第20题思考。当20题只包含一种括号的时候能不能不使用栈,而是通过左右括号的数量比较来实现。

  • 相关阅读:
    根据数组对象中的某个属性值排序
    vue小知识
    vue项目中config文件中的 index.js 配置
    小问题
    原生无缝轮播
    webpack打包提交代码
    echarts
    面试问题
    MySql
    vue-router 跳转原理
  • 原文地址:https://www.cnblogs.com/likaiming/p/8298629.html
Copyright © 2011-2022 走看看