Shirlies
宁静专注认真的程序媛~

题目:

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

  • 1^2 + 9^2 = 82
  • 8^2 + 2^2 = 68
  • 6^2 + 8^2 = 100
  • 1^2 + 0^2 + 0^2 = 1

链接:

https://leetcode.com/problems/happy-number/

答案:

暴力解决,直接给每个数的每位计算平方和就行,然后把中间的数都记录下来,如果下次出现这个数,就是loop了。

代码:

 1 #include<vector>
 2 
 3 using std::vector;
 4 
 5 class Solution {
 6 private:
 7     vector<int> med;
 8     
 9     bool inMed(int n)
10     {
11         vector<int>::iterator beg;
12         for(beg = med.begin(); beg != med.end(); ++ beg)
13         {
14             if(*beg == n)
15             {
16                 return true;
17             }
18         }
19         
20         return false;
21     }
22     
23     int sum(int n)
24     {
25         int s = 0;
26         while(n != 0)
27         {
28             int modn = n % 10;
29             s += modn * modn;
30             n = n /10;
31         }
32         
33         return s;
34     }
35     
36 public:
37     bool isHappy(int n) 
38     {
39         if(n == 1 || n == 19 || n == 13 || n == 10)
40         {
41             return true;
42         }
43         
44         med.clear();
45         med.push_back(n);
46         
47         int result = n;
48         bool isLoop = false;
49         while( result != 1)
50         {
51             result = sum(result);
52             if(result != 1 && inMed(result))
53             {
54                 isLoop = true;
55                 break;
56             }
57             
58             med.push_back(result);
59         }
60         
61         return !isLoop;
62     }
63 };
View Code

代码中的isHappy()方法的最开头我是随便加了几个判断,哈哈,题目中给出的快乐数应该会在后台的测试数据中。

posted on 2016-07-11 09:00  Shirlies  阅读(580)  评论(0编辑  收藏  举报