202-Happy Number
【题目】
写一个算法判断一个数是否"happy"
一个"happy"数的定义如下:开始于任意一个正整数,将该数替换为所有位上的数的平方和,然后重复这个过程直到这个数等于1,或者它可能无限循环(不包括1),这些结束于1的为"happy"数
举例: 19是一个"happy"数
12+92=82
82+22=68
62+82=100
12+02+02=1
【分析】
1.主要的问题是如何结束循环
2.记录一个HashMap,将每次计算过后的数存入map中,当下一次遇到就直接返回false
【算法实现】
public class Solution { public boolean isHappy(int n) { Map<Integer,Boolean> map = new HashMap<Integer,Boolean>(); int sum = helper(n); while(sum != 1) { if(map.get(sum) != null && map.get(sum) == true) { return false; } map.put(sum,true); sum=helper(sum); } return true; } public int helper(int n) { int res = 0; while(n != 0) { int i = n%10; res += i*i; n = n/10; } return res; } }