LeetCode-202:快乐数
2019-07-20 10:09
148 查看
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
代码实现
C++:
模拟平方和更新过程,记录出现过的平方和,若某个数字出现两次,说明程序会一直在这两个数字之间死循环,即不是快乐数,直接返回false。否则可以到达平方和为1,返回true。
class Solution { public: bool isHappy(int n) { map<int, bool> appearNums; while(n > 1){ int temp = 0; while(n > 0){ temp += (n%10)*(n%10); //获取下一位数 n /= 10; } n = temp; //判断temp是否是第一次在appearNums(映射表)中出现 if(appearNums.count(temp) == 0){ appearNums[temp] = true; } else{ //第二次出现,意味着后面将会进入死循环 return false; } } return true; } };
Python:
class Solution(object): def isHappy(self, n): """ :type n: int :rtype: bool """ # 如果是happy数据,每个求平方和的数字只会出现一次 appearNums = [] while n > 1: # 1的平方和就是1 temp = 0 # 求每位数的平方和 while n > 0: temp += (n%10)**2 # 获取下一位数 n /= 10 n = temp # 将每一次平方和数据添加到列表 if temp not in appearNums: appearNums.append(temp) else: # 如果是happy数每个平方和的数只能出现一次 # 出现两次意味着进入死循环 return False return True
相关文章推荐
- LeetCode刷题笔记 202. 快乐数
- LeetCode202——Happy Number快乐数
- 【LeetCode】Python实现-202. 快乐数
- leetcode(1)两数求和 (202)快乐数
- LeetCode 202 快乐数
- [LeetCode]202. Happy Number 快乐数
- leetcode 202 Happy Number
- LeetCode 202. Happy Number
- LeetCode 202. Happy Number 题解
- leetcode202(Floyd判圈算法(龟兔赛跑算法))
- 【leetcode】202. Happy Number
- 【Leetcode】202. Happy Number
- LEETCODE 202
- [Leetcode] 202. Happy Number 解题报告
- leetcode_202. Happy Number 找happy数,数的分解,判断是否循环
- leetcode202: Happy Number
- leetcode 202 Happy Number C++
- leetcode 202 Happy Number
- leetcode-202-Happy Number
- Java [Leetcode 202]Happy Number