Skip to content

Commit 846074f

Browse files
committed
add leetcode 78
1 parent 478a592 commit 846074f

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

leetcode/0078.subsets/subsets.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package leetcode
2+
3+
var ans [][]int
4+
5+
func subsets(nums []int) [][]int {
6+
ans = make([][]int, 0)
7+
8+
for i := 0; i <= len(nums); i++ {
9+
cur := make([]int, 0, i)
10+
backtrace(nums, 0, i, cur)
11+
}
12+
13+
return ans
14+
}
15+
16+
func backtrace(nums []int, pos, num int, cur []int) {
17+
if len(cur) == num {
18+
tmp := make([]int, len(cur))
19+
copy(tmp, cur)
20+
ans = append(ans, tmp)
21+
return
22+
}
23+
24+
for i := pos; i < len(nums); i++ {
25+
cur = append(cur, nums[i])
26+
backtrace(nums, i+1, num, cur)
27+
cur = cur[:len(cur)-1]
28+
}
29+
}

leetcode/0078.subsets/subsets_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package leetcode
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func TestSubsets(t *testing.T) {
10+
assert.ElementsMatch(t, [][]int{
11+
{3},
12+
{1},
13+
{2},
14+
{1, 2, 3},
15+
{1, 3},
16+
{2, 3},
17+
{1, 2},
18+
{},
19+
}, subsets([]int{1, 2, 3}))
20+
}

0 commit comments

Comments
 (0)