Leetcode 202. Happy Number

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. Description

Happy Number

2. Solution

  • Version 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
bool isHappy(int n) {
int m = n;
map<int, int> sums;
int sum = 0;
while(sums[sum] == 0) {
sums[sum] = 1;
sum = 0;
while(m) {
int r = m % 10;
sum += r * r;
m = m / 10;
}
if(sum == 1) {
return true;
}
m = sum;
}
return false;
}
};
  • Version 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
bool isHappy(int n) {
int slow = calDigits(n);
int fast = calDigits(slow);
while(slow != 1 && slow != fast) {
slow = calDigits(slow);
fast = calDigits(fast);
fast = calDigits(fast);
}
return slow == 1;
}

private:
int calDigits(int m) {
int sum = 0;
while(m) {
int r = m % 10;
sum += r * r;
m = m / 10;
}
return sum;
}
};

Reference

  1. https://leetcode.com/problems/happy-number/description/
如果有收获,可以请我喝杯咖啡!