202. 快乐数 | Happy Number

Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example:

Input: 19
Output: true
Explanation:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

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

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

示例:

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

20ms
 1 class Solution {
 2     func isHappy(_ n: Int) -> Bool {
 3         var m:Int = n
 4         var got:Set<Int> = Set<Int>()
 5         while(m != 1 && !got.contains(m))
 6         {
 7             got.insert(m)
 8             var sum:Float = 0
 9             while(m != 0)
10             {
11                 sum += powf(Float(m % 10),2)
12                 m /= 10
13             }
14             m = Int(sum)
15         }
16           return m == 1
17     }
18 }


12ms

 1 class Solution {
 2     func isHappy(_ n: Int) -> Bool {
 3       var nT = n
 4
 5         while (nT != 1 && nT != 4) {
 6             var t = 0
 7             while (nT>0) {
 8                 t += (nT % 10) * (nT % 10)
 9                 nT /= 10
10             }
11             nT = t
12         }
13         return nT == 1
14     }
15 }


12ms

 1 class Solution {
 2
 3     func nextSum(n: Int) -> Int {
 4         var sum = 0
 5         var nn = n
 6         while nn > 0 {
 7             sum += (nn % 10) * (nn % 10)
 8             nn /= 10
 9         }
10
11         return sum
12     }
13
14     func isHappy(_ n: Int) -> Bool {
15         var ans = nextSum(n: n)
16         while ans > 4 {
17             ans = nextSum(n: ans)
18         }
19         return ans == 1
20     }
21
22 }


16ms
 1 class Solution {
 2     func isHappy(_ n: Int) -> Bool {
 3         guard n > 0 else {
 4             return false
 5         }
 6
 7         var set = Set<Int>()
 8         var n = n
 9
10         while n != 1 {
11             if set.contains(n) {
12                 return false
13             }
14             set.insert(n)
15
16             var res = 0
17             while n != 0 {
18                 res += (n % 10) * (n % 10)
19                 n = n / 10
20             }
21             n = res
22         }
23
24         return true
25     }
26 }

原文地址:https://www.cnblogs.com/strengthen/p/9744963.html

时间: 2024-08-29 01:25:31

202. 快乐数 | Happy Number的相关文章

202. 快乐数

编写一个算法来判断一个数是不是“快乐数”. 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1.如果可以变为 1,那么这个数就是快乐数. 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 我的解决方法: class Solution { public boolean isHappy(i

力扣(LeetCode)202. 快乐数

编写一个算法来判断一个数是不是"快乐数". 一个"快乐数"定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1.如果可以变为 1,那么这个数就是快乐数. 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 思路1 经测试,如果一个数不是快乐数,那么至多经过八次就会进入循环.

[LeetCode] 202. 快乐数

题目链接:https://leetcode-cn.com/problems/happy-number/ 题目描述: 编写一个算法来判断一个数是不是"快乐数". 一个"快乐数"定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1.如果可以变为 1,那么这个数就是快乐数. 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82

leetcode——202.快乐数

别人好聪明,为什么我只能想到思路但是却实现不出来.... 还是得多做才会吧 class Solution: def isHappy(self, n: int) -> bool: n=str(n) v=set() while 1: n=str(sum(int(i)**2 for i in n)) if n=='1': return True if n in v: return False v.add(n) 执行用时 :32 ms, 在所有 Python3 提交中击败了100.00%的用户 内存消耗

LeetCode:Happy Number - 快乐数

1.题目名称 Happy Number(快乐数) 2.题目地址 https://leetcode.com/problems/happy-number/ 3.题目内容 英文: Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, repla

A12:快乐数

发现快乐数有如下特征: 1.如果一个数"不快乐",则它计算到后面必然陷入到这个循环里:4, 16, 37, 58, 89, 145, 42, 20, 4, ... 2.对于一个大于243的数字来说,它的下一个数字一定比它小.这是因为一个大于1000的数字,它的下一个数字一定比它小,而对于1000以下最大的数字999,它的下一个数字是243,所以1000以下数字的下一个数字也只可能小于或等于243 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的

lintcode:快乐数

快乐数 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 解题定义最大循环次数方法 public class Solution { /** *

LintCode Python 简单级题目 488.快乐数

题目描述: 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 您在真实的面试中是否遇到过这个题? Yes 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 标签 数学 哈希表 题目分析: 将数

488 快乐数

原题网址:https://www.lintcode.com/problem/happy-number/description 描述 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 您在真实的面试中是否遇到过这个题?  是 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2