题目:
编写一个算法来确定一个数字是否“幸福”
快乐的数字定义为:从任何正整数,取代数的平方和的位数,并重复这个过程,直到数= 1(它将保持),或者它无休止地循环周期,不包括1。以1结束的那些数字是幸福的数字
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
Input: 19 Output: true 1² + 9² = 82 8² + 2² = 68 6² + 8² = 100 1² + 0² + 0² = 1
参考:
思路:
分快、慢来进行计算,快的变量每次计算两次,慢的变量每次计算一次
如果一个数是happy number,那么最后慢的数字和快的数字会都变为1
如果不是,则慢的数字和快的数字一直都不会变成1
代码:
class Solution {
public boolean isHappy(int n) {
int fast,slow;
slow = fast = n;
do {
slow = sum(slow);
fast = sum(fast);
fast = sum(fast);
if(fast==1) {
return true;
}
}while(slow!=fast);
return false;
}
public int sum(int n) {
int sum = 0;
int temp;
while(n>0) {
temp = n%10;
n = n/10;
sum = sum + temp * temp;
}
return sum;
}
}