diff --git a/Algorithms/0781. Rabbits in Forest/781. Rabbits in Forest.go b/Algorithms/0781. Rabbits in Forest/781. Rabbits in Forest.go new file mode 100644 index 00000000..ff43f2b4 --- /dev/null +++ b/Algorithms/0781. Rabbits in Forest/781. Rabbits in Forest.go @@ -0,0 +1,14 @@ +package leetcode + +func numRabbits(ans []int) int { + total, m := 0, make(map[int]int) + for _, v := range ans { + if m[v] == 0 { + m[v] += v + total += v + 1 + } else { + m[v]-- + } + } + return total +} diff --git a/Algorithms/0781. Rabbits in Forest/781. Rabbits in Forest_test.go b/Algorithms/0781. Rabbits in Forest/781. Rabbits in Forest_test.go new file mode 100644 index 00000000..f8c8bed1 --- /dev/null +++ b/Algorithms/0781. Rabbits in Forest/781. Rabbits in Forest_test.go @@ -0,0 +1,51 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +type question781 struct { + para781 + ans781 +} + +// para 是参数 +// one 代表第一个参数 +type para781 struct { + one []int +} + +// ans 是答案 +// one 代表第一个答案 +type ans781 struct { + one int +} + +func Test_Problem781(t *testing.T) { + + qs := []question781{ + question781{ + para781{[]int{1, 1, 2}}, + ans781{5}, + }, + + question781{ + para781{[]int{10, 10, 10}}, + ans781{11}, + }, + + question781{ + para781{[]int{}}, + ans781{0}, + }, + } + + fmt.Printf("------------------------Leetcode Problem 781------------------------\n") + + for _, q := range qs { + _, p := q.ans781, q.para781 + fmt.Printf("【input】:%v 【output】:%v\n", p, numRabbits(p.one)) + } + fmt.Printf("\n\n\n") +}