1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Happy Number を Java で判定する(LeetCode #202)

Posted at

ハッピーナンバーとは

「ハッピーナンバー(Happy Number)」とは、以下の条件を満たす正の整数のことです:

任意の正の整数から始める。

その数字の各桁の平方の和を計算して置き換える。

この操作を繰り返す。

最終的に 1 に到達すれば Happy Number、そうでなければループに入って 非ハッピー。

アルゴリズムの考え方

数字を平方和に変換し続ける

既に出てきた数字 が再度出てきた場合はループなので false

最終的に 1 に到達したら true

import java.util.HashSet;
import java.util.Set;

class Solution {
    public boolean isHappy(int n) {
        Set<Integer> seen = new HashSet<>();

        while (n != 1) {
            if (seen.contains(n)) return false; // ループ検出
            seen.add(n);

            int sum = 0;
            while (n > 0) {
                int digit = n % 10;
                sum += digit * digit;
                n /= 10;
            }

            n = sum; // 次の数字に置き換え
        }

        return true; // 1に到達 → Happy Number
    }
}

コード解説

HashSet seen
すでに出てきた数字を記録
重複チェックによってループを検出

while (n != 1)
数字が1になるまで繰り返す

sum += digit * digit
各桁の平方を足す

if (seen.contains(n)) return false
ループに入った場合は false

return true
1に到達したら Happy Number

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?