Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions GenerateParentheses/step1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
```java
// Until reach to the max length(n * 2)
// We try to add left part first then add right side
// Until number of left part reach to n, we can add left part
// And if number of left part is bigger than right part, we can try to add right part
// Time complexity: O(2**(N*2))
// Space complexity: O(n) stack memory for backtack
// Time spend: XX(Found the answer after checking Solutions tab)
class Solution {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これはこれでひとつと思います。他に分け方が色々あると思うので、これもレビューワーが説明してくれるでしょう。

public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<>();
generateParenthesis(res, 0, 0, "", n);
return res;
}

public void generateParenthesis(List<String> res, int l, int r, String curr,int n) {
if (curr.length() == n * 2) {
res.add(curr);
return;
}

if (l < n) {
generateParenthesis(res, l + 1, r, curr + "(", n);
}
if (r < l) {
generateParenthesis(res, l, r + 1, curr + ")", n);
}
}
}
```
25 changes: 25 additions & 0 deletions GenerateParentheses/step2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
```java
// Time spend: 01:47
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<>();
generateParenthesis(res, 0, 0, n, "");
return res;
}

public void generateParenthesis(List<String> res, int l, int r, int n, String curr) {
if (curr.length() == n * 2) {
res.add(curr);
return;
}

if (l < n) {
generateParenthesis(res, l + 1, r, n, curr + '(');
}

if (r < l) {
generateParenthesis(res, l, r + 1, n, curr + ')');
}
}
}
```
77 changes: 77 additions & 0 deletions GenerateParentheses/step3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
```java
// Time spend: 01:33
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<>();
generateParenthesis(res, 0, 0, n, "");
return res;
}

public void generateParenthesis(List<String> res, int l, int r, int n, String curr) {
if (curr.length() == n * 2) {
res.add(curr);
return;
}

if (l < n) {
generateParenthesis(res, l + 1, r, n, curr + '(');
}

if (r < l) {
generateParenthesis(res, l, r + 1, n, curr + ')');
}
}
}
```

```java
// Time spend: 01:37
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<>();
generateParenthesis(res, 0, 0, n, "");
return res;
}

public void generateParenthesis(List<String> res, int l, int r, int n, String curr) {
if (curr.length() == n * 2) {
res.add(curr);
return;
}

if (l < n) {
generateParenthesis(res, l + 1, r, n, curr + '(');
}

if (r < l) {
generateParenthesis(res, l, r + 1, n, curr + ')');
}
}
}
```

```java
// Time spend: 01:26
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<>();
generateParenthesis(res, 0, 0, n, "");
return res;
}

public void generateParenthesis(List<String> res, int l, int r, int n, String curr) {
if (curr.length() == n * 2) {
res.add(curr);
return;
}

if (l < n) {
generateParenthesis(res, l + 1, r, n, curr + '(');
}

if (r < l) {
generateParenthesis(res, l, r + 1, n, curr + ')');
}
}
}
```