[JavaScript] LeetCode 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 的方式將每個位數平方相加。

程式碼

/**
 * @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;
};
[JavaScript] LeetCode 202. Happy Number
0 0 評分數
Article Rating
訂閱
通知
guest

0 Comments
在線反饋
查看所有評論