Skip to content

Commit f5f2fd1

Browse files
aQuaaQua
aQua
authored and
aQua
committed
78 submit 后,发现答案的顺序可能不对
1 parent 4cc77af commit f5f2fd1

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

Algorithms/0078.subsets/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# [78. Subsets](https://leetcode.com/problems/subsets/)
2+
3+
## 题目
4+
Given a set of distinct integers, nums, return all possible subsets.
5+
6+
Note: The solution set must not contain duplicate subsets.
7+
8+
For example,
9+
If nums = [1,2,3], a solution is:
10+
11+
```
12+
[
13+
[3],
14+
[1],
15+
[2],
16+
[1,2,3],
17+
[1,3],
18+
[2,3],
19+
[1,2],
20+
[]
21+
]
22+
```
23+
## 解题思路
24+
25+
见程序注释

Algorithms/0078.subsets/subsets.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package Problem0078
2+
3+
func subsets(nums []int) [][]int {
4+
res := [][]int{}
5+
6+
cur(nums, []int{}, &res)
7+
8+
return res
9+
}
10+
11+
func cur(nums, temp []int, res *[][]int) {
12+
if len(nums) == 0 {
13+
*res = append(*res, temp)
14+
return
15+
}
16+
17+
cur(nums[1:], temp, res)
18+
19+
cur(nums[1:], append(temp, nums[0]), res)
20+
21+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package Problem0078
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
type question struct {
11+
para
12+
ans
13+
}
14+
15+
// para 是参数
16+
type para struct {
17+
nums []int
18+
}
19+
20+
// ans 是答案
21+
type ans struct {
22+
one [][]int
23+
}
24+
25+
func Test_Problem0078(t *testing.T) {
26+
ast := assert.New(t)
27+
28+
qs := []question{
29+
30+
question{
31+
para{
32+
[]int{1, 2, 3},
33+
},
34+
ans{[][]int{
35+
[]int{},
36+
[]int{3},
37+
[]int{2},
38+
[]int{2, 3},
39+
[]int{1},
40+
[]int{1, 3},
41+
[]int{1, 2},
42+
[]int{1, 2, 3},
43+
}},
44+
},
45+
46+
// 如需多个测试,可以复制上方元素。
47+
}
48+
49+
for _, q := range qs {
50+
a, p := q.ans, q.para
51+
fmt.Printf("~~%v~~\n", p)
52+
53+
ast.Equal(a.one, subsets(p.nums), "输入:%v", p)
54+
}
55+
}

0 commit comments

Comments
 (0)