22. Generate Parentheses
Tags:
Medium
Skills:
backtrack
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Đề bài yêu cầu cần tạo tất cả các tổ hợp dấu ngoặc tròn hợp lệ với n cặp dấu ngoặc
Approach
Time and space complexity
Solution
1function generateParenthesis(n: number): string[] {
2 const res: string[] = [];
3
4 function backtrack(current: string, open: number, close: number): void {
5 if (current.length === 2 * n) {
6 res.push(current);
7 return;
8 }
9
10 if (open < n) {
11 backtrack(current + "(", open + 1, close);
12 }
13
14 if (close < open) {
15 backtrack(current + ")", open, close + 1);
16 }
17 }
18
19 backtrack("", 0, 0);
20 return res;
21}open : Số ngoặc mở đã dùngclose : Số ngoặc đóng đã dùngclose <= open <= n để chuỗi hợp lệBạn có thể tưởng tượng backtrack như việc duyệt một cây. Mỗi đỉnh (node) trên cây là một trạng thái của bài toán (ở đây là chuỗi ngoặc hiện tại có cùng số lượng ngoặc mở / đóng)
Minh họa cụ thể
1 ""
2 / \
3 ( )
4 / \
5 (( ()
6 / \ / \
7 (() ()) ()( ())
8"(()"), thuật toán quay lại node cha ("((") để thử nhánh sibling còn lại ("(((" nếu có).Bản chất