LeetCode202号问题——happy number遇到的坑

最早使用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
}

猜你喜欢

转载自blog.csdn.net/cxzzxc123456/article/details/87890714