最早使用go语言刷,定义了一个全局变量map,结果在本地可以通过,提交到oj就通不过,程序确定没有问题,后来搜了一下原来leetcode的评测机制是全局变量是针对所有的testcase,也就是每运行一个testcase的时候全局变量都不会清空,故导致评测出错。本题的一种直观解法是递归,而go语言的map又无法在调用该map的第一行直接清空,因此无奈只好改成非递归解法,避免使用全局变量
func isHappy(n int) bool {
m := make(map[int]bool)
for {
if n == 1 {
return true
}
if _, ok := m[n]; ok {
return false
} else {
m[n] = true
}
n = split(n)
}
}
func split(n int) int {
num := 0
for n != 0 {
num += (n % 10) * (n % 10)
n = n / 10
}
return num
}