这一题和之前碰到的一题比较像,判断数组中是否存在环,使用快慢指针来解决的
这里也一样,使用快慢指针来寻找是否存在环,如果存在环,那么就跳出循环,然后判断当前的数字是否为1
var isHappy = function (n) {
var getNextNumber = function (n) {
let sum = 0
while (n > 0) {
let last = n % 10
sum += last * last
n = Math.floor(n / 10)
}
return sum
}
let slow = n, fast = n
do {
slow = getNextNumber(slow)
fast = getNextNumber(getNextNumber(fast))
} while (slow !== fast)
return slow === 1
};