題目:git
Write an algorithm to determine if a number is "happy".app
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.less
Example: 19 is a happy numberide
連接:oop
https://leetcode.com/problems/happy-number/測試
答案:this
暴力解決,直接給每一個數的每位計算平方和就行,而後把中間的數都記錄下來,若是下次出現這個數,就是loop了。spa
代碼:code
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 };
代碼中的isHappy()方法的最開頭我是隨便加了幾個判斷,哈哈,題目中給出的快樂數應該會在後臺的測試數據中。blog