您的位置:首页 > 移动开发

Leetcode#202. Happy Number

2018-03-26 15:25 344 查看
题目描述:判断一个数是否为happy数,如19为happy数:



解题思路:我们首先看一个不是happy数的例子,如11:



可以看到,此时4又出现了,那么会一直陷入这样的循环中,不会出现1,所以判断一个数是否为happy数只要将这个数的各个数位的数平方相加,若出现过的相加和没有重复且最后出现了1,那么这个数字就是happy数,否则不是。

C++实现如下:

class Solution {
public:
bool isHappy(int n)
{
set<int> data;  //存储出现过的数
while(!data.count(n)) //若这个数没出现过则循环,count用来统计n的数量
{
data.insert(n);
int sum = 0;
while(n)
{
sum = sum + (n % 10) * (n % 10);  //求出这一次出现的数sum
n = n / 10;
}
if(sum == 1)        //如果sum为1,则返回true
return true;
n = sum;           //令n=sum,若n没有出现过,则继续循环;若n出现过,则返回false
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: