定义一个函数计算数位平方和,把每次的和记录在一个哈希表中,每计算一次检验一次,如果出现重复的元素,说明无限循环了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public: int getSum(int num) { int sum = 0; while(num > 0) { sum += ((num % 10) * (num % 10)); num /= 10; } return sum; }
bool isHappy(int n) { unordered_set<int> nums; while (nums.find(n) == nums.end()) { nums.insert(n); n = getSum(n); if(n == 1) return true; } return false; } };
|