標籤:leetcode 經典面試題
題目
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
思路
無
代碼
/*---------------------------------------------------------* 日期:2015-04-22* SJF0115* 題目: 202.Happy Number* 網址:https://leetcode.com/problems/happy-number/* 結果:AC* 來源:LeetCode* 部落格:------------------------------------------------------------*/#include <iostream>#include <vector>#include <algorithm>using namespace std;class Solution {public: bool isHappy(int n) { if(n == 1){ return true; }//if if(n == 0){ return false; }//if return Recursion(n); }private: vector<int> visited; bool Recursion(int n){ if(n == 1){ return true; }//if int num = n; int tmp,value = 0; while(num){ tmp = num % 10; value += tmp * tmp; num /= 10; }//while // 判斷是否形成圈 vector<int>::iterator result = find(visited.begin(),visited.end(),value); if(result != visited.end()){ return false; }//if visited.push_back(value); return Recursion(value); }};int main(){ Solution solution; int n = 2; if(solution.isHappy(n)){ cout<<n<<" is Happy Number"<<endl; }//if else{ cout<<n<<" is not Happy Number"<<endl; } return 0;}
已耗用時間
[LeetCode]202.Happy Number