LeetCode第22题:括号生成(java实现)

题目:

LeetCode第22题:括号生成(java实现)_第1张图片

解答:(并不是自己想出来的)

第一种方法:暴力法(递归)

解答如下:

class Solution {
    public List generateParenthesis(int n) {
        List combinations = new ArrayList();
        generateAll(new char[2 * n], 0, combinations);
        return combinations;
    }

    public void generateAll(char[] current, int pos, List result) {
        if (pos == current.length) {
            if (valid(current))
                result.add(new String(current));
        } else {
            current[pos] = '(';
            generateAll(current, pos+1, result);
            current[pos] = ')';
            generateAll(current, pos+1, result);
        }
    }

    public boolean valid(char[] current) {
        int balance = 0;
        for (char c: current) {
            if (c == '(') balance++;
            else balance--;
            if (balance < 0) return false;
        }
        return (balance == 0);
    }
}

 

你可能感兴趣的:(LeetCode习题集,LeetCode习题集)