快樂數
阿新 • • 發佈:2021-01-23
技術標籤:刷題
題目:
編寫一個演算法來判斷一個數 n 是不是快樂數。
「快樂數」定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果 可以變為 1,那麼這個數就是快樂數。
如果 n 是快樂數就返回 True ;不是,則返回 False 。
題解一:
把每次得到的數保持到容器中,如果得到的數在容器中已存在,則表明出現迴圈,返回false。如果得到的數為1,則表明此數為快樂數,返回true。
程式碼一:
class Solution {
public:
int get_next (int n){
int res=0;
while(n>0){
res=res+(n%10)*(n%10);
n/=10;
}
return res;
}
bool isHappy(int n) {
set<int> s;
while(n!=1&&s.count(n)==0){
s.insert(n);
n=get_next(n);
}
return n==1;
}
};