File tree 2 files changed +103
-0
lines changed
solution/0202.Happy Number
2 files changed +103
-0
lines changed Original file line number Diff line number Diff line change
1
+ ## 快乐数
2
+ ### 题目描述
3
+
4
+ 编写一个算法来判断一个数是不是“快乐数”。
5
+
6
+ 一个“快乐数”定义为:
7
+
8
+ 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
9
+
10
+ 示例:
11
+ ```
12
+ 输入: 19
13
+ 输出: true
14
+ 解释:
15
+ 1² + 9² = 82
16
+ 8² + 2² = 68
17
+ 6² + 8² = 100
18
+ 1² + 0² + 0² = 1
19
+ ```
20
+
21
+ ### 解法
22
+ 在进行验算的过程中,发现一个规律,只要过程中得到任意一个结果和为4,那么就一定会按 ` 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 `
23
+ 进行循环,这样的数就不为快乐数;此外,结果和与若是与输入n或者上一轮结果和n相同,那也不为快乐数.
24
+
25
+ ``` java
26
+ class Solution {
27
+ public boolean isHappy (int n ) {
28
+ if (n <= 0 ) return false ;
29
+ int sum = 0 ;
30
+ while (sum != n) {
31
+ while (n > 0 ) {
32
+ sum += Math . pow(n % 10 ,2 );
33
+ n /= 10 ;
34
+ }
35
+ if (sum == 1 ) {
36
+ return true ;
37
+ } else if (sum == 4 ) {
38
+ return false ;
39
+ } else {
40
+ n = sum;
41
+ sum = 0 ;
42
+ }
43
+ }
44
+ return false ;
45
+ }
46
+ }
47
+
48
+ // 递归
49
+ public boolean isHappy(int n) {
50
+ if (n <= 0 ) return false ;
51
+ int sum = 0 ;
52
+ while (n > 0 ) {
53
+ sum += Math . pow(n % 10 ,2 );
54
+ n /= 10 ;
55
+ }
56
+ if (sum == 1 ) {
57
+ return true ;
58
+ } else if (sum == 4 ) {
59
+ return false ;
60
+ } else {
61
+ return isHappy(sum);
62
+ }
63
+ }
64
+ ```
Original file line number Diff line number Diff line change
1
+
2
+ class Solution {
3
+ public boolean isHappy (int n ) {
4
+ if (n <= 0 ) return false ;
5
+ int sum = 0 ;
6
+ while (sum != n ) {
7
+ while (n > 0 ) {
8
+ sum += Math .pow (n % 10 , 2 );
9
+ n /= 10 ;
10
+ }
11
+ if (sum == 1 ) {
12
+ return true ;
13
+ } else if (sum == 4 ) {
14
+ return false ;
15
+ } else {
16
+ n = sum ;
17
+ sum = 0 ;
18
+ }
19
+ }
20
+ return false ;
21
+ }
22
+
23
+ // 递归
24
+ public boolean isHappy2 (int n ) {
25
+ if (n <= 0 ) return false ;
26
+ int sum = 0 ;
27
+ while (n > 0 ) {
28
+ sum += Math .pow (n % 10 , 2 );
29
+ n /= 10 ;
30
+ }
31
+ if (sum == 1 ) {
32
+ return true ;
33
+ } else if (sum == 4 ) {
34
+ return false ;
35
+ } else {
36
+ return isHappy2 (sum );
37
+ }
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments