码迷,mamicode.com
首页 > 移动开发 > 详细

[leetcode] 202. Happy Number

时间:2016-01-03 23:58:43      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

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

Credits:
Special thanks to @mithmatt and @ts for adding this problem and creating all test cases.

[Solution]

不是happy number的话,结果会出现循环,用set记录所有结果,出现重复则为false

 1 bool isHappy(int n)
 2     {
 3         set<int> table;
 4         
 5         table.insert(n);
 6         while (1)
 7         {
 8             int k = 0;
 9             while (n)
10             {    
11                 k += (n % 10) * (n % 10);
12                 n /= 10;
13             }
14             if (k == 1)
15                 return true;
16             if (table.find(k) != table.end())
17                 return false;
18             n = k;
19             table.insert(n);
20         }
21     }

 

[leetcode] 202. Happy Number

标签:

原文地址:http://www.cnblogs.com/ym65536/p/5097331.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!