- 快乐数
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
使用map存储所有得到的n,如果新得到的n在map中存在,说明存在循环,直接return false。如果n==1,return true.
执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗 :7.9 MB, 在所有 C++ 提交中击败了99.25%的用户
C++代码
class Solution {
public:
bool isHappy(int n) {
map<int,int> m;
m[n]=1;
while(n!=1)
{
int temp=0;
while(n>0)
{
temp+=(n%10)*(n%10);
n/=10;
}
n=temp;
if(m.find(n)==m.end())
m[n]=1;
else
return false;
}
return true;
}
};