1,这个代码里的left和right是怎么对应做括号右括号的啊
2能给个代码加上main主方法打印输出结果看看嘛?
可以的,你创建一个main方法,方法内调用generateParentheses方法,并传参数。
class Solution {
// Leetcode 22. Generate Parentheses
// Backtracking
// Time Complexity: Hard To Say
// Space Complexity: Hard To Say
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<>();
backtracking(n, result, 0, 0, "");
return result;
}
private void backtracking(int n, List<String> result, int left, int right, String str) {
if (right > left) {
return;
}
if (left == n && right == n) {
result.add(str);
return;
}
if (left < n) {
backtracking(n, result, left+1, right, str+"(");
}
if (right < left) {
backtracking(n, result, left, right+1, str+")");
}
}
}
import java.util.ArrayList;
import java.util.List;
public class demoMedium22 {
public static void main(String[] args) {
demoMedium22 s = new demoMedium22();
List<String> st = s.generateParenthesis(3);
}
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<>();
backtracking(n, result, 0, 0, "");
System.out.println(result);
return result;
}
private void backtracking(int n, List<String> result, int left, int right, String str) {
if (right > left) {
return;
}
if (left == n && right == n) {
result.add(str);
System.out.print("执行次数");
return;
}
if (left < n) {
backtracking(n, result, left + 1, right, str + "(");
}
if (right < left) {
backtracking(n, result, left, right + 1, str + ")");
}
}
}