快樂數這題有兩個關鍵
一個是求n的 各個位上平方和
另一個是判斷是否為快樂數的依據是是否在哈希表中找到已經出現過的數
1求各個位上平方和方法
定義sum
sum = N除以十取余的平方和
n/10
循環終止條件是n=0
2查找一個數是否出現,用哈希表unordered_set ,
插入用set.insert
找到重復出現的數,用set.find(n) != set.end()
/** @lc app=leetcode.cn id=202 lang=cpp** [202] 快樂數*/// @lc code=start
class Solution {
public:int getSum(int n){int sum = 0;while(n){sum += (n%10)*(n%10);n = n/10;}return sum;}bool isHappy(int n) {unordered_set<int> set;while(1){n = getSum(n);if(n == 1) return true;if(set.find(n) != set.end()){return false;}else{set.insert(n);}}}
};
// @lc code=end