当前位置:网站首页>【LeetCode 202】快乐数
【LeetCode 202】快乐数
2022-04-21 06:20:00 【别偷我能量】
题目描述
快乐数 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
示例1
输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例2
输入:n = 2
输出:false
知道你们懒得计算画,“舅”宠你们。解释

通过上面的图和示例1中的解释你或许有了思路,自己可以先动手操作一下。再看下面的解题思路。
解题思路
递归
通过上图可以知道,如果不是快乐数,经过n次计算,一定会进入一个死循环,也就是会得到之前重复计算过的数(利用哈希表解决这一问题)。快乐数经过有限次计算得到1。用这两个条件作为递归结束的条件,就能很快写出递归。
class Solution {
public:
unordered_set<int> ans;//利用哈希表判断当前数值是否计算过
bool isHappy(int n) {
int x=0;
while(n){
x+=pow(n%10,2);
n=n/10;
}
if(x==1)//是快乐数
return true;
else{
if(ans.count(x)==1)//该数字前面计算过,不是快乐数
return false;
else{
ans.insert(x);
return isHappy(x);
}
}
}
};
或许有同学会想到暴力去解决,但是我们无法知道最大的死循环次数会是多少,无法确定外层循环的循环次数。个人不建议这样去做,我们要知道死循环代表的什么,就是重复计算之前计算过的值。用这一个作为递归结束条件,就能很快写出递归。
欢迎交流和补充~
版权声明
本文为[别偷我能量]所创,转载请带上原文链接,感谢
https://blog.csdn.net/mitongxue/article/details/123725775
边栏推荐
- 最实用的Chrome插件
- This site cannot provide a secure connection. An unsupported protocol is used
- Making books with bookdown
- STM32 H743 ECC内存相关使用说明笔记
- vmware workstation server 服务无法启动
- [AD] modular schematic drawing pit point record
- vscode 自定义注释
- The jupyter notebook of win10 uses pyspark 2 3.2 error reporting problems solved
- 【STM32&LWIP】记录一次诡异的ping不通的解决方法
- Write tweets for one year and share five commonly used writing software
猜你喜欢

跨域问题-Allow-Origin header contains multiple values... but only one is allowed

vscode 自定义注释

Li Kou video note 21 - depth first search method + 938 question method

P1586 四方定理题解

How to download and use the journal latex template

为短路运算符布尔表达式添加括号

【LeetCode 59】螺旋矩阵 II

php初级程序员,接单,挣外快的指导方法

Reproduce the 3D density function diagram in the top issue of SCI

Sql中 代替not in的一种解决方式
随机推荐
【W5500】STM32 H743驱动W5500进行UDP收发
学习瑞芯微RK3399pro记录(10)
JDBC simple implementation of student management system
STM32 H743 ECC内存相关使用说明笔记
解决replace遍历循环调用,导致后续的replace替换掉前面replace的数据的问题
Draw QQ charts with different distribution
Implement an array in the form of JS function prototype. forEach(),. map(),. filter()
This site cannot provide a secure connection. An unsupported protocol is used
Build your own blog
BatchUpdateException在MySQL和Oracle的区别
【STM32 H7】H743各个内存块地址分布备忘
云计算中网络基础知识
idea如何打包成war包
【Labview】记录下做Labview项目的一些坑点
改图片后缀
[WPF] notes
2020杭电多校赛第四场1007 Go Running(hdu6808)
[w5500] STM32 h743 drives w5500 for UDP transceiver
3.bat中date命令问题
【LeetCode 459 】重复的子字符串