首页目录 点击查看
第一题
- 难度:简单
- 题目: 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
在我的电脑上两者的区别并不大