快乐数
题目
202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
示例 1:
输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例 2:
输入:n = 2
输出:false
提示:
题解
挺简单一题,只要知道不是快乐数的机制就好了 一旦出现循环,接肯定不是快乐数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public static boolean isHappy(int n) { List<Integer> integers = new ArrayList<>(); int sum = n; while (true) { integers.add(sum); int tempSum = aaa(sum);
if (tempSum == 1) { return true; }else if (integers.contains(tempSum)) { return false; } else { sum = tempSum; } } }
private static int aaa(int sum) { List<Integer> integers = intToListOfInts(sum); sum = 0; for (Integer integer : integers) { sum += (int) Math.pow(integer, 2); } return sum; }
public static List<Integer> intToListOfInts(int number) { List<Integer> list = new ArrayList<>(); while (number > 0) { list.add(0, number % 10); number /= 10; } return list; }
|
