標籤:
Write an algorithm to determine if a number is "happy".
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
歡樂數,就是不斷將位的平方相加為新數,看看最後得到的數是不是1,是的話就是歡樂數,否則不是。代碼比較簡單,用一個set儲存下來已經求到過的不是1的數字,一旦
後期某個計算到的數字能在set中找到(不是1),那麼就一定進入到死迴圈當中了。這是就應該返回false, 否則一旦某個計算結果是1那麼久返回true,代碼見下:
1 class Solution { 2 public: 3 bool isHappy(int n) { 4 set<int> sample; 5 sample.insert(n); 6 int s = 0; 7 for(;;){ 8 while(n != 0){ 9 s += (n % 10) * (n % 10);10 n /= 10;11 }12 if(s == 1)13 return true;14 else{15 if(sample.find(s) != sample.end())16 return false;17 sample.insert(s);18 n = s;19 s = 0;20 }21 }22 }23 };
LeetCode OJ:Happy Number(歡樂數)