File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
pullrequests/generate_parentheses Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ //lint:file-ignore U1000 Ignore all unused code
2+ package generateparentheses
3+
4+ /*
5+ 初見で解くことができず、他の人の回答を見ながら解く形になってしまいました。
6+ 一応自分でもバックトラッキングをちゃんと理解して自力で下記のコードを書けるようにはなりました。
7+
8+ 時間計算量と空間計算量はカタラン数になるという認識。
9+ https://github.com/SuperHotDogCat/coding-interview/pull/7#discussion_r1577988152
10+ https://github.com/Mike0121/LeetCode/pull/1#discussion_r1577919957
11+ */
12+ func generateParenthesis_step1 (n int ) []string {
13+ var parentheses []string
14+ var stack []byte
15+ var generate func (int , int )
16+ generate = func (open int , closed int ) {
17+ if open == n && closed == n {
18+ parentheses = append (parentheses , string (stack ))
19+ return
20+ }
21+ if open < n {
22+ stack = append (stack , '(' )
23+ generate (open + 1 , closed )
24+ stack = stack [:len (stack )- 1 ]
25+ }
26+ if open > closed {
27+ stack = append (stack , ')' )
28+ generate (open , closed + 1 )
29+ stack = stack [:len (stack )- 1 ]
30+ }
31+ }
32+ generate (0 , 0 )
33+ return parentheses
34+ }
You can’t perform that action at this time.
0 commit comments