您的位置:首页 > 移动开发

LeetCode(七)HashSet 202. Happy Number

2017-08-18 16:32 477 查看

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

1^2 + 9^2 = 82

8^2 + 2^2 = 68

6^2 + 8^2 = 100

1^2 + 0^2 + 0^2 = 1

一开始没有理解题目的意思,原来是说如果一直没有1并且最终是无限循环下去。

解法如下

public class Solution {
public boolean isHappy(int n) {
Set<Integer> inLoop = new HashSet<Integer>();
int squareSum,remain;
while (inLoop.add(n)) {
squareSum = 0;
while (n > 0) {
remain = n%10;
squareSum += remain*remain;
n /= 10;
}
if (squareSum == 1)
return true;
else
n = squareSum;

}
return false;

}

}


使用HashSet的好处是可以检测是否已经开始无限循环了,只要有重复的数字就会跳出while循环。

使用HashMap可以参考LeetCode(三)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode