本文主要是介绍Leetcode——202. Happy Number,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Question
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
Answer
Properity1
不是快乐数的数称为不快乐数(unhappy number),所有不快乐数的数位平方和计算,最後都会进入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中。
class Solution {
public:bool isHappy(int n) {if(n<=0) return false;while(1){if(n==1) return true;if(n==4) return false;int sum_n=0;while(n){sum_n=sum_n+(n%10)*(n%10);n=n/10;}n=sum_n;}}
};
next solution!
class Solution {
public:bool isHappy(int n) {int slow,fast;slow=fast=n;do{slow=next(slow);fast=next(next(fast));if(fast==1) return 1;}while(slow!=fast);return 0;}
private:int next(int n){int sum_n=0;while(n){sum_n=sum_n+(n%10)*(n%10);n=n/10;}return sum_n;}
};
这篇关于Leetcode——202. Happy Number的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!