[LeetCode] 202. Happy Number
Problem
Write an algorithm to determine if a number n
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.
- 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.
Return
true
ifn
is a happy number, andfalse
if not.
Example 1:
Input: n = 19
Output: true
Explanation:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
Example 2:
Input: n = 2
Output: false
Constraints:
1 <= n <= 2^31 - 1
Solution
Logic
-
자료구조 Set을 선언한다
-
정수 n을 Set에 삽입한다.
-
n의 각 자리수를 제곱한 뒤, 더하여 새로운 n을 만들고 2번 과정을 다시 수행한다.
-
n이 Set에 존재한다면 false를 반환하고, n이 1이 되면 true를 반환한다.
Code
class Solution { public boolean isHappy(int n) { Set<Integer> set = new HashSet<>(); while (n != 1 && !set.contains(n)) { int sum = 0; set.add(n); while (n != 0) { sum += Math.pow(n % 10, 2); n /= 10; } n = sum; } return n == 1; } }
Leave a comment