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 202 Happy Number
- LeetCode 202-Happy Number
- leetcode 202 Happy Number
- LeetCode 202. Happy Number
- leetcode 202. Happy Number
- LeetCode 202. Happy Number (Easy)
- Leetcode 202 Happy Number
- leetcode-202 Happy Number
- leetcode 202. Happy Number
- leetcode 202: Happy Number
- [LeetCode]202. Happy Number
- 【leetcode】202. Happy Number
- LeetCode 202. Happy Number
- 【LeetCode】202. Happy Number
- leetcode 202. Happy Number | 循环检测
- leetcode202: Happy Number
- leetcode-202-Happy Number
- leetcode 202 Happy Number
- Leetcode_202_Happy Number
- LeetCode 202:Happy Number