本文主要是介绍[LeetCode]202.Happy Number,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
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;}//ifif(n == 0){return false;}//ifreturn Recursion(n);}
private:vector<int> visited;bool Recursion(int n){if(n == 1){return true;}//ifint 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;}//ifvisited.push_back(value);return Recursion(value);}
};int main(){Solution solution;int n = 2;if(solution.isHappy(n)){cout<<n<<" is Happy Number"<<endl;}//ifelse{cout<<n<<" is not Happy Number"<<endl;}return 0;
}
运行时间
这篇关于[LeetCode]202.Happy Number的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!