• LeetCode(22) - Generate Parentheses


      题目要求给你一个数字n,代表有n个括号()。然后输出n个括号可能的组合。如n=2时,就是"()() (())"。

      如以前讲过,当需要列出所有可能的组合的时候,我们优先想到的就是backtracking。思路大概是这样子:用两个数字left和right纪录当前“剩余”(还没有没有加上)的括号数,对于其中一层递归,当加一个左括号,left减1,进入下一层。而在当层,如果right > left,就加一个右括号,进入另外一个递归。知道left = right = 0为止,递归结束。

      代码如下:

     1 public class Solution {
     2     public List<String> generateParenthesis(int n) {
     3         List<String> list = new ArrayList<String>();
     4         if (n > 0) {
     5             generateParenthesisHelper(list,"",n,n);
     6         }
     7         return list;
     8     }
     9     
    10     private void generateParenthesisHelper(List<String> list, String s, int left, int right) {
    11         //递归结束条件。
    12         if (right == 0) {
    13             list.add(s);
    14             return;
    15         }
    16         
    17         //当left>0,加一个"(",left-1,进入下一层。
    18         if (left > 0) {
    19             generateParenthesisHelper(list,s + "(",left-1,right);
    20         }
    21         
    22         //当right>left,加一个")",right-1,进入另一个递归(比上面递归多一个右括号)。
    23         if (right > left) {
    24             generateParenthesisHelper(list,s + ")",left,right-1);
    25         }
    26     }
    27 }
  • 相关阅读:
    node 读取文件
    jQuery全局事件处理函数
    可以发送不同源请求的方式
    ajax 高度封装的函数
    jQuery中AJAX的回调
    jQuery中对AJAX的封装
    ajax 基本的封装
    AJAX 返回数据问题
    ajax 关于响应类型
    动态渲染数据到表格中
  • 原文地址:https://www.cnblogs.com/kepuCS/p/5278467.html
Copyright © 2020-2023  润新知