LeetCode - 生成括号
问题陈述
给出n对小括号,编写一个函数来_生成所有格式良好的小括号_的组合。
问题陈述摘自:https://leetcode.com/problems/generate-parentheses
例子1:
Input: n = 3
例2:
Input: n = 1
限制条件。
- 1 <= n <= 8
解释
蛮力法
解决这个问题的蛮力方法是用**(和)**生成所有小括号的组合。然后验证哪些是有效的组合,并将有效的组合加入到结果中。
上述逻辑的一个小的C++代码片断看起来如下。
vector<string> generateParenthesis(int n) {
上述程序的时间复杂度为O((2²n)*n)。
逆向追踪
我们可以通过使用回溯的方法来避免生成所有可能的小括号排列组合。
我们不需要像上面的方法那样每次都添加**(或)**,而是只在我们知道这将是一个有效的序列时才添加它们。为了做到这一点,我们可以跟踪到目前为止我们已经添加的开括号和闭括号的数量。
算法
- initialize result array.
C++解决方案
class Solution {
Golang解决方案
func generateParenthesis(n int) []string {
Javascript的解决方案
var generateParenthesis = function(n) {
让我们试运行一下我们的算法,看看这个解决方案是如何运作的。
Input: n = 2
原文发表于 https://alkeshghorpade.me.
LeetCode - Generate Parentheses最初发表于Nerd For Techon Medium,在那里人们通过强调和回应这个故事继续对话。