leetCode之快慢指针遍历

首页目录 点击查看

第一题

  • 难度:简单
  • 题目: 202. 快乐数

解题思路

  • 这道题,我本来想着的是直接用递归的方法,但是题意是使用快慢指针,可是我并不太了解什么是快慢指针,所以,快慢指针是根据大佬们的题解写出来的。

我的答案

  • 递归
        var isHappy = function (n) {
            let map = {}
            let flag = false

            function getSum(n) {
                let sum = 0
                while (n !== 0) {
                    const bit = n % 10
                    sum += bit * bit
                    n = parseInt(n / 10)
                }
                if (sum === 1) {
                    flag = true
                    return true
                }
                if (map[sum]) {
                    flag = false
                    return false
                } else {
                    map[sum] = sum
                    getSum(sum)
                }
            }
            getSum(n)
            return flag
        };
  • 快慢指针
        var isHappy = function (n) {
            let slow = n,
                fast = n;

            function getSum(n) {
                console.log(n)
                let sum = 0
                while (n !== 0) {
                    const bit = n % 10
                    sum += bit * bit
                    n = parseInt(n / 10)
                }
                return sum
            }
            do {
                slow = getSum(slow);
                fast = getSum(getSum(fast))
            } while (slow !== fast);
            return slow === 1
        };
image.png

在我的电脑上两者的区别并不大

你可能感兴趣的:(leetCode之快慢指针遍历)