Golang:
思路:直接把我的题解搬上来吧
对abc进行排序,假定排完序后abc依次递增
条件1:b-a=c-b=1时,最小移动步数为0
条件2:不满足条件1, 那么看下b-a或者c-b有没有小于等于2的,有,那么最小移动步数为1
条件3:不满足条件1 2,那么最小移动步数为2
最大移动步数:
注意,这里是我不太理解的。我觉得以我对题意的理解,这题最大步数不是这么算的,比如
a=0,b=4,c=14
我可以先将a移动到7的位置,移动次数为7,移动后,位置变成[4,7,14]
再将4移动到10,移动次数为6,移动后,位置变成[7,10,14]
我认为这样的移动是符合题目给的条件的,但我此时就已经移动了13次了,而0 4 14的答案是12
题目想要我们求的最大移动步数,实际上是,max(a,b,c)-min(a,b,c)-2
代码如下:
func maxNumberOfBalloons(text string) int {
res:=make([]int,5)
for i:=0;i<len(text);i++{
switch text[i] {
case 'b':
res[0]+=2
case 'a':
res[1]+=2
case 'l':
res[2]+=1
case 'o':
res[3]+=1
case 'n':
res[4]+=2
}
}
temp:=res[0]
for i:=1;i<len(res);i++{
if res[i]<temp {
temp=res[i]
}
}
return temp/2
}
有疑问加站长微信联系(非本文作者)