Skip to content

Commit df9cbef

Browse files
aQuaaQua
aQua
authored and
aQua
committed
381 runtime error
1 parent a861a95 commit df9cbef

File tree

2 files changed

+44
-19
lines changed

2 files changed

+44
-19
lines changed

Algorithms/0381.insert-delete-getrandom-o1-duplicates-allowed/insert-delete-getrandom-o1-duplicates-allowed.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func (r *RandomizedCollection) Remove(val int) bool {
4545

4646
// 删除最后一个数
4747
r.a = r.a[:len(r.a)-1]
48-
// 在 r.idx 中删除 val 的记录
48+
// 在 r.idx 中删除最后一个 val 的记录
4949
if lenOfVal == 1 {
5050
delete(r.idx, val)
5151
} else {

Algorithms/0381.insert-delete-getrandom-o1-duplicates-allowed/insert-delete-getrandom-o1-duplicates-allowed_test.go

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,55 @@ import (
66
"github.com/stretchr/testify/assert"
77
)
88

9-
func Test_Problem0381(t *testing.T) {
10-
ast := assert.New(t)
11-
12-
rs := Constructor()
13-
14-
ast.True(rs.Insert(1), "插入1")
9+
type question struct {
10+
para
11+
ans
12+
}
1513

16-
ast.False(rs.Remove(2), "删除2")
14+
// para 是参数
15+
type para struct {
16+
orders []string
17+
paras []int
18+
}
1719

18-
ast.True(rs.Insert(2), "插入2")
20+
// ans 是答案
21+
type ans struct {
22+
solutions []interface{}
23+
}
1924

20-
ast.Contains([]int{1, 2}, rs.GetRandom(), "返回1或2")
25+
func Test_Problem0382(t *testing.T) {
26+
ast := assert.New(t)
2127

22-
ast.True(rs.Remove(1), "删除1")
28+
qs := []question{
2329

24-
ast.False(rs.Insert(2), "再一次插入2")
30+
question{
31+
para{
32+
[]string{"RandomizedCollection", "insert", "insert", "insert", "insert", "insert", "remove", "remove", "remove", "insert", "remove", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"},
33+
[]int{0, 1, 1, 2, 2, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
34+
},
35+
ans{
36+
[]interface{}{nil, true, false, true, false, false, true, true, true, true, true, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2},
37+
},
38+
},
2539

26-
ast.Equal(2, rs.GetRandom(), "从只有2的集合中随机取出2")
40+
// 如需多个测试,可以复制上方元素。
41+
}
2742

28-
length := 100
29-
result := make([]int, length)
30-
for i := 0; i < 100; i++ {
31-
rs.Insert(i)
32-
result[i] = i
43+
for _, q := range qs {
44+
sol, ord, par := q.ans.solutions, q.para.orders, q.para.paras
45+
rs := Constructor()
46+
for i := 1; i < len(ord); i++ {
47+
switch ord[i] {
48+
case "insert":
49+
ast.Equal(sol[i], rs.Insert(par[i]), "Insert %d", par[i])
50+
case "remove":
51+
ast.Equal(sol[i], rs.Remove(par[i]), "Remove %d", par[i])
52+
case "getRandom":
53+
r := rs.GetRandom()
54+
ast.Contains([]int{1, 2}, r, "GetRandom %d", r)
55+
default:
56+
ast.Fail("无法处理的命令", "%s", ord[i])
57+
}
58+
}
3359
}
34-
ast.Contains(result, rs.GetRandom(), "随机获取0~100之间的数")
3560
}

0 commit comments

Comments
 (0)