leetcode:括号生成(java)回溯实现
程序员文章站
2024-03-21 16:19:16
...
应用于回溯思想:无非就是六个括号进行排列组合:也就是2^6;不是左括号就是右括号,然后进行一个一个的走不行则进行返回上一层。但是要控制住其中的左括号和右括号对应正常思想是先进行左括号所以左括号一定要比右括号多根据这个思想我进行写代码经过不断更改过测试;
package LeetCode;
import java.util.ArrayList;
import java.util.List;
public class HS_KuoHaoPailie {
public List<String> generateParenthesis(int n) {
List<String> result=new ArrayList<>();
String a="";
p(a,n,n,result);
return result;
}
public void p(String a,int left,int right,List<String> result) {
/* if (left > right) {
return;
}
*/// 开始走此条件右边的扩号一定比左边的小
if (left<=right&&left>0) {
p(a +"(", left - 1, right,result);
}
//在字符串中的右括号小于左括号时才能进行右括号执行
if (right>left&&right>0) {
p(a+")" , left, right - 1,result);
}
if (left == 0 && right == 0) {
result.add(a.toString());
return;
}
}
/* if (right<left)return;
if (left==0&&right==0){
result.add(a);
return ;
}
p(a+"(",left-1,right);
p(a+")",left,right-1);
}*/
public static void main(String[] args) {
HS_KuoHaoPailie a=new HS_KuoHaoPailie();
System.out.println(a.generateParenthesis(3));
}
}