Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit 5adced2

Browse files
committed
90 add benchmark test
1 parent 3d2af5b commit 5adced2

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

Algorithms/0090.subsets-ii/README.md

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
# [90. Subsets II](https://leetcode.com/problems/subsets-ii/)
22

3-
## 题目
43
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
54

65
Note: The solution set must not contain duplicate subsets.
76

8-
97
For example,
10-
If nums = [1,2,2], a solution is:
118

9+
```text
10+
If nums = [1,2,2], a solution is:
1211
1312
[
1413
[2],
@@ -18,8 +17,4 @@ If nums = [1,2,2], a solution is:
1817
[1,2],
1918
[]
2019
]
21-
22-
## 解题思路
23-
观察题目输出结果的规律后,利用dfs解题
24-
25-
见程序注释
20+
```

Algorithms/0090.subsets-ii/subsets-ii.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,25 @@ package problem0090
22

33
import "sort"
44

5-
func subsetsWithDup(nums []int) [][]int {
5+
func subsetsWithDup(A []int) [][]int {
66
res := [][]int{}
7-
sort.Ints(nums)
7+
sort.Ints(A)
88

99
var dfs func(int, []int)
10-
dfs = func(idx int, temp []int) {
10+
dfs = func(index int, temp []int) {
1111
t := make([]int, len(temp))
1212
copy(t, temp)
13-
// 没有以上两行,答案就是错的
14-
// 因为temp的底层数组在递归过程中,不停地修改
15-
// 程序结束时,temp的底层数组的值,全部是 nums 的最大值。
1613
res = append(res, t)
1714

18-
for i := idx; i < len(nums); i++ {
19-
if i == idx || nums[i] != nums[i-1] {
20-
dfs(i+1, append(temp, nums[i]))
15+
for i := index; i < len(A); i++ {
16+
if i == index ||
17+
A[i] != A[i-1] { // 避免重复答案
18+
dfs(i+1, append(temp, A[i]))
2119
}
2220
}
2321
}
2422

25-
temp := make([]int, 0, len(nums))
23+
temp := make([]int, 0, len(A))
2624
dfs(0, temp)
2725

2826
return res

Algorithms/0090.subsets-ii/subsets-ii_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,10 @@ func Test_Problem0090(t *testing.T) {
7474
ast.Equal(a.one, subsetsWithDup(p.nums), "输入:%v", p)
7575
}
7676
}
77+
78+
func Benchmark_subsetsWithDup(b *testing.B) {
79+
A := []int{1, 2, 3, 6, 5, 4, 7, 8, 9, 5, 6, 3, 2, 4}
80+
for i := 1; i < b.N; i++ {
81+
subsetsWithDup(A)
82+
}
83+
}

0 commit comments

Comments
 (0)