码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode——Generate Parentheses

时间:2019-05-13 23:25:05      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:ret   org   就是   运算   sub   track   family   upload   tps   

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:

"((()))", "(()())", "(())()", "()(())", "()()()"

原题链接:https://oj.leetcode.com/problems/generate-parentheses/

题目:给定n对括号,写一个函数生成全部的构造良好的括号对。

思路:相似这样子的东西在组合数学中有学习到,今天再查了一下。就是卡特琳数

其通项公式为技术图片Cn表示全部包括n组括号的合法运算式的个数。

对于计算,能够採用递归的方式。left、right分别代表"("、")"的数目。

在每次递归函数中记录左括号和右括号的剩余数量,然后有两种选择。一个是放一个左括号。还有一种是放一个右括号。当然有一些否定条件。比方剩余的右括号不能比左括号少,或者左括号右括号数量都要大于0。

正常结束条件是左右括号数量都为0。

	public static List<String> generateParenthesis(int n) {
		List<String> list = new ArrayList<String>();
		helper(list,"",0,0,n);
		return list;
	}
	public static void helper(List<String> list,String s,int left,int right,int n){
		if(left < right)
			return;
		if(left == n && right==n){
			list.add(s);
			return;
		}
		if(left == n){
			helper(list,s+")",left,right+1,n);
			return;
		}
		helper(list,s+"(",left+1,right,n);
		helper(list,s+")",left,right+1,n);
	}

reference :?http://blog.csdn.net/linhuanmars/article/details/19873463

? ??http://blog.csdn.net/fightforyourdream/article/details/14159435


LeetCode——Generate Parentheses

标签:ret   org   就是   运算   sub   track   family   upload   tps   

原文地址:https://www.cnblogs.com/xfgnongmin/p/10859316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!