leet_code_202.快乐数(快慢指针)

简介: leet_code_202.快乐数(快慢指针)

题目信息


编写一个算法来判断一个数 n 是不是快乐数。


「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。

如果 n 是快乐数就返回 True ;不是,则返回 False 。

示例:

输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1


代码详情


/**
 * @author ZhangFZ
 * @date 2020/4/30 10:59
 **/
public class leet_code_202_快乐数 {
    /**
     * 编写一个算法来判断一个数 n 是不是快乐数。
     *
     * 「leet_code_202_快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
     * 如果 可以变为  1,那么这个数就是快乐数。
     *
     * 如果 n 是快乐数就返回 True ;不是,则返回 False 。
     *
     * 示例:
     * 输入:19
     * 输出:true
     * 解释:
     * 12 + 92 = 82
     * 82 + 22 = 68
     * 62 + 82 = 100
     * 12 + 02 + 02 = 1
     */
    public static void main(String[] args) {
        System.out.println(isHappy(19));
        System.out.println(isHappy(20));
    }
    private static boolean isHappy(int n) {
        int slow = n;
        int fast = getNext(n);
        while(slow != 1 && fast != slow){
            slow = getNext(slow);
            fast = getNext(getNext(fast));
        }
        return slow == 1;
    }
    private static int getNext(int num){
        int result = 0;
        while(num > 0){
            int flag = num % 10;
            num = num / 10;
            result =  result + flag * flag;
        }
        return result;
    }
}


目录
相关文章
|
7月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
7月前
快慢指针之:链表中倒数第k个结点
快慢指针之:链表中倒数第k个结点
|
1月前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
39 1
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
|
7月前
|
算法 C语言 索引
环形链表(快慢指针)
环形链表(快慢指针)
|
7月前
数据结构--链表刷题(一)快慢指针(下)
数据结构--链表刷题(一)快慢指针
51 0
|
7月前
数据结构--链表刷题(一)快慢指针(上)
数据结构--链表刷题(一)快慢指针
60 0
|
7月前
|
算法 Java
快慢指针该如何操作?本文带你认识快慢指针常见的三种用法及在链表中的实战
快慢指针该如何操作?本文带你认识快慢指针常见的三种用法及在链表中的实战
125 0
|
7月前
|
存储 算法
LeetCode刷题--- 61. 旋转链表(快慢指针+闭合为环)
LeetCode刷题--- 61. 旋转链表(快慢指针+闭合为环)
|
7月前
|
算法 索引
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)