按照题目的意思进行循环,判断每次循环结果是否为1,若是则返回true,否则用map记录结果,然后修改n进行下一次循环。
class Solution {
private:
int count_sum(int n){ // 定义题目中所述的求和函数
int sum = 0;
while(n > 0){
sum += (n % 10) * (n % 10);
n /= 10;
}
return sum;
}
public:
bool isHappy(int n) {
map<int, int>mp;
while(n){
if(n == 1) return true;
if(mp[n] == 1) return false;
mp[n] = 1;
n = count_sum(n);
}
return false;
}
};