80 lines
1.7 KiB
Java
80 lines
1.7 KiB
Java
//编写一个算法来判断一个数 n 是不是快乐数。
|
||
//
|
||
// 「快乐数」定义为:
|
||
//
|
||
//
|
||
// 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
|
||
// 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
|
||
// 如果 可以变为 1,那么这个数就是快乐数。
|
||
//
|
||
//
|
||
// 如果 n 是快乐数就返回 true ;不是,则返回 false 。
|
||
//
|
||
//
|
||
//
|
||
// 示例 1:
|
||
//
|
||
//
|
||
//输入:19
|
||
//输出:true
|
||
//解释:
|
||
//12 + 92 = 82
|
||
//82 + 22 = 68
|
||
//62 + 82 = 100
|
||
//12 + 02 + 02 = 1
|
||
//
|
||
//
|
||
// 示例 2:
|
||
//
|
||
//
|
||
//输入:n = 2
|
||
//输出:false
|
||
//
|
||
//
|
||
//
|
||
//
|
||
// 提示:
|
||
//
|
||
//
|
||
// 1 <= n <= 231 - 1
|
||
//
|
||
// Related Topics 哈希表 数学
|
||
// 👍 615 👎 0
|
||
|
||
package leetcode.editor.cn;
|
||
|
||
import java.util.HashSet;
|
||
import java.util.Set;
|
||
|
||
//202:快乐数
|
||
public class HappyNumber {
|
||
public static void main(String[] args) {
|
||
//测试代码
|
||
Solution solution = new HappyNumber().new Solution();
|
||
}
|
||
|
||
//力扣代码
|
||
//leetcode submit region begin(Prohibit modification and deletion)
|
||
class Solution {
|
||
private int getNext(int n) {
|
||
int totalSum = 0;
|
||
while (n > 0) {
|
||
int d = n % 10;
|
||
n = n / 10;
|
||
totalSum += d * d;
|
||
}
|
||
return totalSum;
|
||
}
|
||
|
||
public boolean isHappy(int n) {
|
||
Set<Integer> seen = new HashSet<>();
|
||
while (n != 1 && !seen.contains(n)) {
|
||
seen.add(n);
|
||
n = getNext(n);
|
||
}
|
||
return n == 1;
|
||
}
|
||
}
|
||
//leetcode submit region end(Prohibit modification and deletion)
|
||
|
||
} |