第202题. 快乐数

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

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

如果 n 是快乐数就返回 True ;不是,则返回 False 。

「示例:」

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

思路

这道题目看上去貌似一道数学问题,其实并不是!

题目中说了会 「无限循环」,那么也就是说「求和的过程中,sum会重复出现,这对解题很重要!」

正如:关于哈希表,你该了解这些!中所说,「当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。」

所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。

判断sum是否重复出现就可以使用unordered_set。

「还有一个难点就是求和的过程,如果对取数值各个位上的单数操作不熟悉的话,做这道题也会比较艰难。」

C++代码:

class Solution {
public:// 取数值各个位上的单数之和int getSum(int n) {int sum = 0;while (n) {sum += (n % 10) * (n % 10);n /= 10;}return sum;}bool isHappy(int n) {unordered_set<int> set;while(1) {int sum = getSum(n);if (sum == 1) {return true;}// 如果这个sum曾经出现过,说明已经陷入了无限循环了,立刻return falseif (set.find(sum) != set.end()) {return false;} else {set.insert(sum);}n = sum;}}
};

本文:https://github.com/youngyangyang04/leetcode-master​已经收录,里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图看一看一定会有所收获,如果对你有帮助也给一个star支持一下吧!

我是程序员Carl,哈工大师兄,先后在腾讯和百度从事技术研发多年,利用工作之余重刷leetcode,更多   精彩算法文章尽在:   代码随想录,关注后,回复「Java」「C++」「python」「简历模板」等等,有我整理多年的学习资料,可以加我   微信,备注「个人简介」+「组队刷题」,拉你进入刷题群(无任何广告,纯个人分享),每天一道经典题目分析,我选的每一道题目都不是孤立的,而是由浅入深一脉相承的,如果跟住节奏每篇连续着看,定会融会贯通。

「leetcode」202. 快乐数:今天你快乐了么?相关推荐

  1. 「LOJ6482」LJJ爱数数

    「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \( ...

  2. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!

    构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...

  3. js实现kmp算法_「leetcode」459.重复的子字符串:KMP算法还能干这个!

    不瞒你说,重复子串问题,KMP很拿手 题目459.重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: ...

  4. 消除左递归c++代码_「leetcode」129. 求根到叶子节点数字之和【递归中隐藏着回溯】详解...

    链接 https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/ 思路 本题和113.路径总和II是类似的思路,做完这道题,可以顺便把113. ...

  5. 二维数组删除_「leetcode」数组:总结篇!(一文搞懂数组题目)

    数组理论基础 数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力 也就是说,想法很简单,但实现起来 可能就不是那么回事了. 首先要知道数组在内存中的存储方 ...

  6. 消除左递归实验代码_「leetcode」669. 修剪二叉搜索树:【递归】【迭代】详解!

    单纯移除一个节点那还不够,要修剪! ❞ 669. 修剪二叉搜索树 题目链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree/ 给定 ...

  7. 「leetcode」332.重新安排行程【回溯算法/深搜】详细图解!

    本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略.各个类型经典题目刷题顺序.思维导图,可以fork ...

  8. 「leetcode」最强回溯算法总结篇!历时21天、画了20张树形结构图、14道精选回溯题目精讲

    本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略.各个类型经典题目刷题顺序.思维导图,可以fork ...

  9. 携手企企通,农业产业化国家重点龙头企业「罗牛山」加速采购数智化建设

    导语 与企企通形成战略合作,双方基于供应商.合同管理.采购协同等多方面的应用场景,打造立足海南辐射全国的行业标准化解决方案.行业案例的示范作用,不仅对牛罗山采购业务数字化有指导意义,对整个畜牧养殖行业 ...

  10. 「LeetCode」160-相交链表

    前言

最新文章

  1. SAP SD基础知识之组织架构设计-Shipping Point篇
  2. 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )
  3. React16.2的fiber架构
  4. 多进程和多线程的区别
  5. 数据库-mysql基础操作之输入查询
  6. 理解 RIPv1使用广播更新路由与RIPv2使用组播更新路由的区别
  7. 前端学习(2081):三种方案对比es5没有闭包
  8. python中 1.34e3_Python快速编程入门——第2章 Python基础语法
  9. Linux下ACE、xml解析库开发环境搭建
  10. Linux中main和初启函数,main 中的 argv和argc 到底是个啥意思?
  11. 打造狂拽炫酷的主流自定义侧滑控件(仿酷狗和QQ5.0)
  12. PostgreSQL数据库WAL——RM_HEAP_ID日志记录动作
  13. 房东违反房屋租赁合同会怎么进行赔偿
  14. CentOS安装NETCDF
  15. 华为认证的含金量高吗?
  16. 淘特(淘宝特价版)关键词搜索
  17. 全藏字【藏文字】的生成算法设计
  18. 视频压缩技术及安卓中用法
  19. Retrofit简介
  20. nodejs爬虫大作业项目

热门文章

  1. WPF 获取程序路径的一些方法,根据程序路径获取程序集信息
  2. 字符串压缩-连续字符压缩并输出次数
  3. NoSQL之HBase
  4. Leetcode 558.四叉树交集
  5. [POJ1830] 开关问题
  6. java面试第四弹(算法和编程)思路
  7. [转]Java程序员们最常犯的10个错误
  8. UIScrollView偏移问题
  9. apulSoft apShaper for Mac(滤波失真插件)
  10. 剪映专业版mac版本要求 剪映mac版最新版更新