File tree Expand file tree Collapse file tree 4 files changed +92
-27
lines changed
solution/0200-0299/0202.Happy Number Expand file tree Collapse file tree 4 files changed +92
-27
lines changed Original file line number Diff line number Diff line change 3131<!-- 这里可写当前语言的特殊实现逻辑 -->
3232
3333``` python
34-
34+ class Solution :
35+ def isHappy (self , n : int ) -> bool :
36+ def get_next (n ):
37+ s = 0
38+ while n > 0 :
39+ n, digit = divmod (n, 10 )
40+ s += digit ** 2
41+ return s
42+
43+ visited = set ()
44+ while n != 1 and n not in visited:
45+ visited.add(n)
46+ n = get_next(n)
47+ return n == 1
3548```
3649
3750### ** Java**
3851
3952<!-- 这里可写当前语言的特殊实现逻辑 -->
4053
4154``` java
42-
55+ class Solution {
56+ public boolean isHappy (int n ) {
57+ Set<Integer > visited = new HashSet<> ();
58+ while (n != 1 && ! visited. contains(n)) {
59+ visited. add(n);
60+ n = getNext(n);
61+ }
62+ return n == 1 ;
63+ }
64+
65+ private int getNext (int n ) {
66+ int s = 0 ;
67+ while (n > 0 ) {
68+ int digit = n % 10 ;
69+ s += digit * digit;
70+ n /= 10 ;
71+ }
72+ return s;
73+ }
74+ }
4375```
4476
4577### ** ...**
Original file line number Diff line number Diff line change 3535### ** Python3**
3636
3737``` python
38-
38+ class Solution :
39+ def isHappy (self , n : int ) -> bool :
40+ def get_next (n ):
41+ s = 0
42+ while n > 0 :
43+ n, digit = divmod (n, 10 )
44+ s += digit ** 2
45+ return s
46+
47+ visited = set ()
48+ while n != 1 and n not in visited:
49+ visited.add(n)
50+ n = get_next(n)
51+ return n == 1
3952```
4053
4154### ** Java**
4255
4356``` java
44-
57+ class Solution {
58+ public boolean isHappy (int n ) {
59+ Set<Integer > visited = new HashSet<> ();
60+ while (n != 1 && ! visited. contains(n)) {
61+ visited. add(n);
62+ n = getNext(n);
63+ }
64+ return n == 1 ;
65+ }
66+
67+ private int getNext (int n ) {
68+ int s = 0 ;
69+ while (n > 0 ) {
70+ int digit = n % 10 ;
71+ s += digit * digit;
72+ n /= 10 ;
73+ }
74+ return s;
75+ }
76+ }
4577```
4678
4779### ** ...**
Original file line number Diff line number Diff line change 11class Solution {
22 public boolean isHappy (int n ) {
3- if (n <= 0 ) return false ;
4- int sum = 0 ;
5- while (sum != n ) {
6- while (n > 0 ) {
7- sum += Math .pow (n % 10 , 2 );
8- n /= 10 ;
9- }
10- if (sum == 1 ) return true ;
11- if (sum == 4 ) return false ;
12- n = sum ;
13- sum = 0 ;
3+ Set <Integer > visited = new HashSet <>();
4+ while (n != 1 && !visited .contains (n )) {
5+ visited .add (n );
6+ n = getNext (n );
147 }
15- return false ;
8+ return n == 1 ;
169 }
17- }
1810
19-
20- // 递归
21- class Solution {
22- public boolean isHappy (int n ) {
23- if (n <= 0 ) return false ;
24- int sum = 0 ;
11+ private int getNext (int n ) {
12+ int s = 0 ;
2513 while (n > 0 ) {
26- sum += Math .pow (n % 10 , 2 );
14+ int digit = n % 10 ;
15+ s += digit * digit ;
2716 n /= 10 ;
2817 }
29- if (sum == 1 ) return true ;
30- if (sum == 4 ) return false ;
31- return isHappy (sum );
18+ return s ;
3219 }
3320}
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def isHappy (self , n : int ) -> bool :
3+ def get_next (n ):
4+ s = 0
5+ while n > 0 :
6+ n , digit = divmod (n , 10 )
7+ s += digit ** 2
8+ return s
9+
10+ visited = set ()
11+ while n != 1 and n not in visited :
12+ visited .add (n )
13+ n = get_next (n )
14+ return n == 1
You can’t perform that action at this time.
0 commit comments