码迷,mamicode.com
首页 > 移动开发 > 详细

*Happy Number

时间:2015-09-11 06:44:56      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

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

 

Naive Way: The statement is describing a recursive process. So it is obvious that the question want me to write a recursive method. The logic has been stated and clear. Base case (ending condition) is either n=1 or n has been visited. And since I need to mark whether a number has been visited, a hashset is required.

 

 

 1  public class Solution {  
 2    Set<Integer> visited = new HashSet<Integer>();    这个要定义在前面
 3    public boolean isHappy(int n) {  
 4      // base case  
 5      if(n==1) return true;  
 6      // visited  
 7      if(visited.contains(n)) return false;  
 8      // main processing  
 9      int sum = 0;  
10      visited.add(n);  
11      while(n!=0){  
12        int lastDigit = n % 10;  
13        sum += lastDigit * lastDigit;  
14        n /= 10;  
15      }  
16      return isHappy(sum);  
17    }  
18  }  

reference: http://siyang2leetcode.blogspot.com/2015/05/happy-number.html

*Happy Number

标签:

原文地址:http://www.cnblogs.com/hygeia/p/4799835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!