题目:
森林中有未知数量的兔子。提问其中若干只兔子 "还有多少只兔子与你(指被提问的兔子)颜色相同?" ,将答案收集到一个整数数组 answers 中,其中 answers[i] 是第 i 只兔子的回答。
给你数组 answers ,返回森林中兔子的最少数量。
实现方法:
由于要求兔子最少数量,可以假定答案相同的兔子颜色是一样,所以将答案加一累加到总和里。但是答案相同的兔子数量可能大于答案的值,比如[2,2,2]。此时的情况是其中两个颜色一样,另一个颜色不同,就不能只往总和里加一次,所以要对答案相同的兔子进行计数。特殊情况是0,表示没有兔子和它颜色一样,直接加入总和就行。
func numRabbits(answers []int) int {
m := make(map[int]int)
sum := 0
for i := 0; i < len(answers); i++ {
if answers[i] == 0 {
sum += 1
} else {
if m[answers[i]] == 0 {//为0说明是新的颜色
m[answers[i]] = answers[i]//计数
sum += answers[i] + 1
} else {
m[answers[i]]--//单种颜色只加一遍
}
}
}
return sum
}
标签:颜色,781,int,sum,answers,力扣,兔子,答案
From: https://www.cnblogs.com/tjhzdsa/p/18050122