Write an algorithm to determine if a number 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, and 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 numbers.
**Example: **19 is a happy number
12
- 92
= 82
82 - 22
= 68
62 - 82
= 100
12 - 02
- 02
= 1
class Solution {
public:
bool isHappy(int n) {
int a[100],len=0;
while(n>1)
{
int sum = 0;
while(n>0)
{
int num = n%10;
sum += num*num;
n = n/10;
}
if(isFind(sum,a,len) == true) return false;
a[len++] = sum; //add the num
n = sum;
}
if(n==1) return true;
else return false;
}
bool isFind(int sum,int a[],int len)
{
int i;
for(i=0;i<len;i++)
{
if(a[i]==sum) return true;
}
return false;
}
};
不開辟空間的方法(別人的思路)
class Solution {
public:
bool isHappy(int n) {
while(n>1)
{
int sum = 0;
while(n>0)
{
sum += pow(n%10,2);
n /=10;
}
if(sum==4) return false;
n = sum;
}
return n==1;
}
};