202 Happy Number
My Submissions
Question
Editorial Solution
Total Accepted: 73442 Total Submissions: 198117 Difficulty: Easy
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
Credits:
Special thanks to @mithmatt and @ts for adding this problem and creating all test cases.
Hide Company Tags Uber Airbnb Twitter
Hide Tags Hash Table Math
Hide Similar Problems (E) Add Digits (E) Ugly Number
import java.util.*;
public class Solution {
public boolean isHappy(int n) {
// https://leetcode.com/discuss/33349/o-1-space-java-solution
// There is some "detecting a circle in a linkedlist" flavor in this solution. Nice!
// 1, 19 true, others are false
// e.g 27 -53- 34-25-29-85-[89]-145 -42-20-4-16-37-58-[89]
int x = n;
int y = n;
while (true) {
x = cal(x);
if (x == 1) return true;
y = cal(cal(y));
if (y == 1) return true;
if (x == y) return false;
}
}
public int cal(int n) {
int x = n;
int result = 0;
while (x > 0) {
result += (x % 10) * (x % 10);
x = x / 10;
}
return result;
}
}