diff --git a/solution/0202.Happy Number/README.md b/solution/0202.Happy Number/README.md new file mode 100644 index 0000000000000..4fea258889564 --- /dev/null +++ b/solution/0202.Happy Number/README.md @@ -0,0 +1,64 @@ +## 快乐数 +### 题目描述 + +编写一个算法来判断一个数是不是“快乐数”。 + +一个“快乐数”定义为: + +对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 + +示例: +``` +输入: 19 +输出: true +解释: +1² + 9² = 82 +8² + 2² = 68 +6² + 8² = 100 +1² + 0² + 0² = 1 +``` + +### 解法 +在进行验算的过程中,发现一个规律,只要过程中得到任意一个结果和为4,那么就一定会按 `4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4` +进行循环,这样的数就不为快乐数;此外,结果和与若是与输入n或者上一轮结果和n相同,那也不为快乐数. + +```java +class Solution { + public boolean isHappy(int n) { + if (n <= 0) return false; + int sum = 0; + while (sum != n) { + while (n > 0) { + sum += Math.pow(n % 10 ,2); + n /= 10; + } + if (sum == 1) { + return true; + } else if (sum == 4) { + return false; + } else { + n = sum; + sum = 0; + } + } + return false; + } +} + +// 递归 +public boolean isHappy(int n) { + if (n <= 0) return false; + int sum = 0; + while (n > 0) { + sum += Math.pow(n % 10 ,2); + n /= 10; + } + if (sum == 1) { + return true; + } else if (sum == 4) { + return false; + } else { + return isHappy(sum); + } + } +``` \ No newline at end of file diff --git a/solution/0202.Happy Number/Solution.java b/solution/0202.Happy Number/Solution.java new file mode 100644 index 0000000000000..c6bf21e099064 --- /dev/null +++ b/solution/0202.Happy Number/Solution.java @@ -0,0 +1,39 @@ + +class Solution { + public boolean isHappy(int n) { + if (n <= 0) return false; + int sum = 0; + while (sum != n) { + while (n > 0) { + sum += Math.pow(n % 10, 2); + n /= 10; + } + if (sum == 1) { + return true; + } else if (sum == 4) { + return false; + } else { + n = sum; + sum = 0; + } + } + return false; + } + + // 递归 + public boolean isHappy2(int n) { + if (n <= 0) return false; + int sum = 0; + while (n > 0) { + sum += Math.pow(n % 10, 2); + n /= 10; + } + if (sum == 1) { + return true; + } else if (sum == 4) { + return false; + } else { + return isHappy2(sum); + } + } +} \ No newline at end of file