美文网首页算法每日一刷
LeetCode-202. 快乐数(Swift)

LeetCode-202. 快乐数(Swift)

作者: entre_los_dos | 来源:发表于2019-07-11 22:32 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/happy-number

    题目

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

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

    示例:

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

    方法1-计算各个数的平方和

    func isHappy(_ n: Int) -> Bool {
            
            var sumDic = [Int:Int]()
            var sum = 0
            var n = n
    
            while sum != 1 {
                sum = self.getSum(n)
                if sumDic.keys.contains(sum) {
                    return false
                }
                sumDic[sum] = n
                n = sum
            }
            
            
            return (sum==1 ? true : false)
        }
        func getSum(_ n: Int) -> Int {
            var n = n
            var sum = 0
            //计算各位的平方和
            while n > 0 {
                sum = sum + (n%10) * (n%10)
                n = n/10
            }
            return sum
        }
    

    定义一个字典,key放已出现过的平方和。
    计算各个数的平方和,如果字典里面已存在,返回false。

    方法2

    相关文章

      网友评论

        本文标题:LeetCode-202. 快乐数(Swift)

        本文链接:https://www.haomeiwen.com/subject/dsbjkctx.html