202.快乐数 不快乐的时候做个快乐题!

简介: 202.快乐数 不快乐的时候做个快乐题!

202.快乐数


https://leetcode-cn.com/problems/happy-number/solution/202kuai-le-shu-zi-fu-chuan-yu-shu-xue-sh-q2np/

难度:简单


题目:

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

「快乐数」定义为:

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

提示:

  • 1 <= n <= 2^31 - 1


示例:

示例 1:
输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例 2:
输入:n = 2
输出:false


分析

这道题我们只需要按要求进行模拟即可,但这里需要注意也许这个数永远也不会是快乐数。

那么我们就需要在计算的过程中,将每次结果保存在一个hashset中,以保证本次计算的结果未在历史的运算过程中出现过。

在这里提供两种模拟方式。

  1. 字符串模拟:通过字符串的匹配进行计算
  2. 数学模拟:通过divmod循环计算


字符串解题

网络异常,图片无法展示
|

class Solution:
    def isHappy(self, n):
        all_set = set()
        while n not in all_set:
            all_set.add(n)
            tmp = sum((map(lambda x: int(x) ** 2, str(n))))
            if tmp == 1:
                return True
            n = tmp
        return False


数学解题:

网络异常,图片无法展示
|

class Solution:
    def isHappy(self, n: int) -> bool:
        all_set = set()
        while n not in all_set:
            all_set.add(n)
            tmp = 0
            while n:
                n,mod = divmod(n,10)
                tmp += mod ** 2
            if tmp == 1:
                return True
            n = tmp
        return False




相关文章
|
6月前
|
存储 Linux Windows
快乐生活,快乐分享,5款实用的小软件推荐
分享是一种神奇的东西,它使快乐增大,它使悲伤减小,坚持分享一些好用的软件给大家,今天继续为大家带来五款好用的小软件。
60 0
|
6月前
|
算法 C++
快乐数(C++)
快乐数(C++)
63 0
|
11月前
|
算法
每日一题:LeetCode-202.快乐数(一点都不快乐)
每日一题:LeetCode-202.快乐数(一点都不快乐)
学习使我快乐
那么就可以通过对两个序列进行遍历,把遍历过的数据存放在另一个空间中,而剩下来的序列直接就可以放进另一个空间内,是因为它是有序的特点,决定它可以直接放进去。
92 0
|
算法 JavaScript 前端开发
日拱算法:双指针解快乐数,快乐就完事了~
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。
|
算法 安全 前端开发
虽然被小学生“群殴”,但我还是很快乐
武汉封城的37天里,武汉人用坚强和责任、爱和担当守护这座城,也在守护着全世界。 在武汉的阿里人,他们都经历了什么,橙子把他们的故事转述给你听。
165 0
虽然被小学生“群殴”,但我还是很快乐
|
弹性计算 运维 安全
快乐云,快乐服务
云服务性能卓越、安全可靠、使用便捷,有弹性伸缩。把在本地的数据上传云端,可以进行随时的修改,面对大量数据可以准确、清晰的处理。各种操作系统都可以使用,便捷了学习的路径。自动化的运维以及部署、大大便捷了使用。各种类型的规格,满足了不同需求的人,更加的人性化。