---
title: 'LeetCode 202. Happy Number'
disqus: hackmd
---
# LeetCode 202. Happy Number
## Description
Write an algorithm to determine if a number n is happy.
A happy number is a number defined by the following process:
* Starting with any positive integer, replace the number by the sum of the squares of its digits.
* Repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
* Those numbers for which this process ends in 1 are happy.
Return true if n is a happy number, and false if not.
## Example
Input: n = 19
Output: true
Explanation:
1^2^ + 9^2^ = 82
8^2^ + 2^2^ = 68
6^2^ + 8^2^ = 100
1^2^ + 0^2^ + 0^2^ = 1
## Constraints
1 <= n <= 2^31^ - 1
## Answer
方法1
此題可用一個個位數慢慢取出來算平方相加,若為1就跳出return trye,若為4就return false,因為4是有重複值出現的話一定會遇到的值。所以只要有4就表示數值一定重複。
```Cin=
//2021_11_24
bool isHappy(int n) {
if(n == 1){return true;}
int temp = 0, ans = 0;
while(n != 1){
ans = 0;
while(n != 0){
temp = n % 10;
ans += (temp*temp);
n /= 10;
}
n = ans;
if(n == 4){return false;}
}
return true;
}
```
方法2
因為若不是happy number的話,他循環計算的結果都會落在2~6之間,所以只要n為6以上才要繼續算,若不是就判斷其是不是happy number。
```Cin=
bool isHappy(int n) {
int tmp = 0, new = 0;
while(n>6){
new = 0;
while(n){
tmp = n%10;
new += tmp*tmp;
n /= 10;
}
n = new;
}
return n == 1;
}
```
說明:http://en.wikipedia.org/wiki/Happy_number#Sequence_behavior
## Link
https://leetcode.com/problems/happy-number/
###### tags: `Leetcode`