113 / 205
LeetCode · MediumO'rta20 ball· ~25 daqiqa

Generate parentheses

Sizga n soni berilgan, u ochiq-yopiq qavslar juftligining sonini bildiradi. Hammasi to'g'ri yopilgan bo'lishi sharti bilan yasalishi mumkin bo'lgan barcha kombinatsiyalarni qaytaring.

Cheklov: 1 ≤ n ≤ 8. Kombinatsiyalar qavslar ochilish tartibida (( avval) qaytariladi, ya'ni "((()))" birinchi turadi.

example.go
func solve(n int) []string {
    // ...
}

Misollar

kod
Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]
kod
Input: n = 1
Output: ["()"]
kod
Input: n = 2
Output: ["(())", "()()"]

Maslahatlar

  1. Har bir qadamda ochiq yoki yopiq qavs qo'shish mumkinmi degan tanlov bilan ishlaydigan rekursiv qidiruv (backtracking) haqida o'ylab ko'ring, faqat har doim to'g'ri (valid) natijaga olib boradigan tanlovlarni qiling.
  2. Joriy satr, ishlatilgan ochiq qavslar soni va ishlatilgan yopiq qavslar sonini parametr sifatida uzatuvchi rekursiv funksiya yozing: ochiq qavslar soni n dan kichik bo'lsa "(" qo'shishingiz mumkin, yopiq qavslar soni ochiq qavslardan kam bo'lsa ")" qo'shishingiz mumkin; satr uzunligi 2n ga yetganda uni natijaga saqlang.