zoukankan      html  css  js  c++  java
  • 0022. Generate Parentheses (M)

    Generate Parentheses (M)

    题目

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

    For example, given n = 3, a solution set is:

    [
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]
    

    题意

    指定整数n,要求输出n个括号对的所有合理组合排序(即所有左括号都有对应的右括号)。

    思路

    排列组合问题很容易想到回溯法:每次递归时,记录待插入的右括号的个数count,以及已经插入的左括号的个数n。当n为0时,说明已经插入所有左括号,只要按count补齐右括号即可添加到答案列表中。分两种情况递归:一是只添加左括号,二是当右括号剩余数有盈余时只添加右括号。


    代码实现

    Java

    class Solution {
        public List<String> generateParenthesis(int n) {
            List<String> ans = new ArrayList<>();
            generate("", 0, n, ans);
            return ans;
        }
    
        // count记录待添加的右括号数,n记录已插入的左括号数
        private void generate(String s, int count, int n, List<String> ans) {
            if (n == 0) {
                for (int i = 0; i < count; i++) {
                    s += ")";
                }
                ans.add(s);
                return;
            }
            // 只添加左括号进行递归
            generate(s + "(", count + 1, n - 1, ans);
            // 有多余右括号待添加时,只添加右括号进行递归
            if (count > 0) {
                generate(s + ")", count - 1, n, ans);
            }
        }
    }
    

    JavaScript

    /**
     * @param {number} n
     * @return {string[]}
     */
    var generateParenthesis = function (n) {
      let list = []
      dfs('', list, n, 0)
      return list
    }
    
    let dfs = function (s, list, left, right) {
      if (left === 0) {
        while (right !== 0) {
          s += ')'
          right--
        }
        list.push(s)
      }
    
      dfs(s + '(', list, left--, right)
      if (right > 0) {
        dfs(s + ')', list, left, right--)
      }
    }
    
  • 相关阅读:
    react生命周期-渲染阶段
    react声明周期详解
    react子传父
    react 爷爷组件件传递给孙子组件
    react验证参数格式类型
    原生input上传视拼,参数形式 file: (binary)形式的
    L2-4 彩虹瓶 (25分)
    L2-3 深入虎穴 (25分)
    L2-1 链表去重 (25分)
    L1-1 帅到没朋友 (20分)
  • 原文地址:https://www.cnblogs.com/mapoos/p/13174978.html
Copyright © 2011-2022 走看看