思路
一开始考虑用暴力,先生成所有括号,再遍历检查有效性
写着写着,不想写了
参考网上的回溯算法写的一个代码
回溯算法主要考虑
1.什么时候返回一组解
2.如何继续搜索
得好好研究下回溯算法
代码
class Solution {
public $ans = array();
// 使用回溯算法
function backtrack($curStr, $left, $right, $n) {
if ($left == $n && $right == $n) {
array_push($this->ans, $curStr);
return;
}
if ($left < $n) {
$this->backtrack($curStr."(", $left+1, $right, $n);
}
if($right < $left) {
$this->backtrack($curStr.")", $left, $right+1, $n);
}
}
/**
* @param Integer $n
* @return String[]
*/
function generateParenthesis($n) {
$this->backtrack("", 0, 0, $n);
$result = array_unique($this->ans);
//var_dump($result);
return $result;
}
}