標籤:無限 pre ram number out OLE turn 規律 數值
原題連結:https://leetcode.com/problems/happy-number/description/
實現如下:
import java.util.HashSet;/** * Created by clearbug on 2018/2/26. */public class Solution { public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.isHappy(1)); System.out.println(s.isHappy(2)); System.out.println(s.isHappy(19)); } /** * 方法一:這道題目沒看出啥太大的規律性,只簡單的發現只要 n % 10 == 0 時,那麼便是返回 true 的時候了;同時為了防止無限迴圈,必須用 * 一個數組來儲存處理過的數值,若出現迴圈了則返回 false; * * @param n * @return */ public boolean isHappy(int n) { HashSet<Integer> set = new HashSet<>(); while (set.add(n)) { if (n == 1) { return true; } n = nextN(n); } return false; } private int nextN(int n) { int res = 0; while (n >= 10) { int remainder = n % 10; res += remainder * remainder; n /= 10; } if (n > 0) { res += n * n; } return res; }}
202. Happy Number