LC202-快樂數
阿新 • • 發佈:2022-04-05
編寫一個演算法來判斷一個數 n 是不是快樂數。
「快樂數」定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果 可以變為 1,那麼這個數就是快樂數。
如果 n 是快樂數就返回 True ;不是,則返回 False 。
示例:
輸入:19
輸出:true
解釋:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
思路:
題目中說了可能會 無限迴圈,那麼也就是說求和的過程中,sum(平方和)會重複出現,因此 ,當我們遇到了要快速判斷一個元素是否出現集合裡的時候,就要考慮雜湊法了。
class Solution { public boolean isHappy(int n) { Set<Integer> s = new HashSet<>(); //該數等於1或者該數重複出現都會結束迴圈 while(n != 1 && !s.contains(n)){ s.add(n); n=getNext(n); } if(n==1) return true; else return false; //if else可以直接寫為 return n==1; 如果n!=1則返回false反之true } public int getNext(int n){ int k=0; while(n > 0){ int temp=n%10; k+=temp*temp; n=n/10; } return k; } }