From 3f16de6462d9d80bf44ec8d0adc95988fccbd028 Mon Sep 17 00:00:00 2001 From: "qingyi.liu" Date: Wed, 19 May 2021 11:42:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AC=AC202=E9=A2=98.=20?= =?UTF-8?q?=E5=BF=AB=E4=B9=90=E6=95=B0javascript=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0202.快乐数.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/problems/0202.快乐数.md b/problems/0202.快乐数.md index 8c0dd1e7..90228b8c 100644 --- a/problems/0202.快乐数.md +++ b/problems/0202.快乐数.md @@ -112,6 +112,40 @@ Python: Go: +javaScript: + +```js +function getN(n) { + if (n == 1 || n == 0) return n; + let res = 0; + while (n) { + res += (n % 10) * (n % 10); + n = parseInt(n / 10); + } + return res; +} + +var isHappy = function(n) { + const sumSet = new Set(); + while (n != 1 && !sumSet.has(n)) { + sumSet.add(n); + n = getN(n); + } + return n == 1; +}; + +// 使用环形链表的思想 说明出现闭环 退出循环 +var isHappy = function(n) { + if (getN(n) == 1) return true; + let a = getN(n), b = getN(getN(n)); + // 如果 a === b + while (b !== 1 && getN(b) !== 1 && a !== b) { + a = getN(a); + b = getN(getN(b)); + } + return b === 1 || getN(b) === 1 ; +}; +```