# 202. Happy Number ## 題目概要 編寫一個函數來判斷數字`n` 是否是 happy number。 判斷 happy number 的過程: 1. 將數字替換為其數字的平方和。 2. 重複這個過程,直到數字等於1,或者進入無限循環。 3. 若結果為 1 的數為 happy number。 4. 若 n 為 happy number 時返回 `true`,如果不是則返回 `false`。 ``` Example 1: Input: n = 19 Output: true Explanation: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 Example 2: Input: n = 2 Output: false ``` ## 解題技巧 - 可以嘗試先觀察 1 ~ 9 的規律,這之中只有 1, 7 是 happy number,其他都不是。 - 而大於 9 之後的每個數結果都會落在 1 ~ 9 之中。 - 因為 2 ~ 6 都不是 happy number,所以我們可以忽略不算,只計算大於 6 的數字,而如果 n = 1 在 return 的時候就會直接判斷,無須進入循環。 - 用 reduce 的方式將每個位數平方相加。 ## 程式碼 ```javascript= /** * @param {number} n * @return {boolean} */ var isHappy = function(n) { while (n > 6) { n = n.toString().split('').reduce((prev, cur) => prev + Math.pow(cur, 2), 0); } return n === 1; }; ``` 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up