zoukankan      html  css  js  c++  java
  • leetcode刷题笔记 二百零二题 快乐数

    leetcode刷题笔记 二百零二题 快乐数

    源地址:202. 快乐数

    问题描述:

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

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

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

    示例:

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

    //本质上是判断是否存在环的问题
    //通过快慢指针方法判断是否成环
    //当快指针值为1时,则返回true,否则返回false
    object Solution {
        def isHappy(n: Int): Boolean = {
            def getNext(num: Int): Int = {
                var res = 0
                var n = num
                while (n > 0) {
                    val digit = n % 10
                    n = n / 10
                    res += digit * digit
                }
                return res
            }
            
            var slowNum = n
            var fastNum = getNext(n)
            
            while (fastNum != 1 && slowNum != fastNum) {
                slowNum = getNext(slowNum)
                fastNum = getNext(getNext(fastNum))
            }
            
            return fastNum == 1
        }
    }
    
  • 相关阅读:
    【2019-12-13】泛型
    【2019-12-12】函数
    【2019-12-10】类
    【2019-12-05】接口
    【2019-12-3】变量声明
    【2019-11-24】基础类型
    【2019-11-20】服务与DI简介
    【2019-11-20】组件简介
    android之ListView与Adapter(结合JavaBean)
    android基类Adapter
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13711001.html
Copyright © 2011-2022 走看看