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 };
时间: 2024-10-06 17:59:57