202.快乐数
描述:
思路:
-
单纯判断一个数是否是快乐数是比较简单的, 但是题目的问题在于, 有非快乐数在判断的过程中, 可能造成死循环, 可以用
unordered_set存储过程中的结果, 当发现有重复, 则为进入了死循环, 直接退出即可.
代码:
/*
* @lc app=leetcode.cn id=202 lang=cpp
*
* [202] 快乐数
*/
// @lc code=start
class Solution
{
public:
bool isHappy(int n)
{
unordered_set<int> result;
int sum = 0;
while (1)
{
while (n)
{
sum += (n % 10) * (n % 10);
n /= 10;
}
if (sum == 1)
{
return true;
}
if (result.count(sum))
{
return false;
}
result.insert(sum);
n = sum;
sum = 0;
}
return false;
}
};