【leetcode】202. 快乐数

84 阅读1分钟

leetcode-202.png

这一题和之前碰到的一题比较像,判断数组中是否存在环,使用快慢指针来解决的
这里也一样,使用快慢指针来寻找是否存在环,如果存在环,那么就跳出循环,然后判断当前的数字是否为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
};