哈希表-快乐数
题目链接
这道题也是用C++的unordered_set
比较简单,题目中提到无限循环,也就是sum是出现过的,也就陷入了无限循环了已经,这个时候就返回false。
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 n){ int sum = 0; while(n){ sum += (n % 10)*(n % 10); n /= 10; } return sum; } bool isHappy(int n) { unordered_set<int> sumSet; while(1){ int sum = getSum(n); if(sum == 1)return true; if(sumSet.find(sum) != sumSet.end()) return false; else sumSet.insert(sum); n = sum; }
} };
|