「leetcode」202. 快乐数:今天你快乐了么?
第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. 快乐数:今天你快乐了么?相关推荐
- 「LOJ6482」LJJ爱数数
「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \( ...
- 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!
构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...
- js实现kmp算法_「leetcode」459.重复的子字符串:KMP算法还能干这个!
不瞒你说,重复子串问题,KMP很拿手 题目459.重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: ...
- 消除左递归c++代码_「leetcode」129. 求根到叶子节点数字之和【递归中隐藏着回溯】详解...
链接 https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/ 思路 本题和113.路径总和II是类似的思路,做完这道题,可以顺便把113. ...
- 二维数组删除_「leetcode」数组:总结篇!(一文搞懂数组题目)
数组理论基础 数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力 也就是说,想法很简单,但实现起来 可能就不是那么回事了. 首先要知道数组在内存中的存储方 ...
- 消除左递归实验代码_「leetcode」669. 修剪二叉搜索树:【递归】【迭代】详解!
单纯移除一个节点那还不够,要修剪! ❞ 669. 修剪二叉搜索树 题目链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree/ 给定 ...
- 「leetcode」332.重新安排行程【回溯算法/深搜】详细图解!
本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略.各个类型经典题目刷题顺序.思维导图,可以fork ...
- 「leetcode」最强回溯算法总结篇!历时21天、画了20张树形结构图、14道精选回溯题目精讲
本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略.各个类型经典题目刷题顺序.思维导图,可以fork ...
- 携手企企通,农业产业化国家重点龙头企业「罗牛山」加速采购数智化建设
导语 与企企通形成战略合作,双方基于供应商.合同管理.采购协同等多方面的应用场景,打造立足海南辐射全国的行业标准化解决方案.行业案例的示范作用,不仅对牛罗山采购业务数字化有指导意义,对整个畜牧养殖行业 ...
- 「LeetCode」160-相交链表
前言
最新文章
- SAP SD基础知识之组织架构设计-Shipping Point篇
- 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )
- React16.2的fiber架构
- 多进程和多线程的区别
- 数据库-mysql基础操作之输入查询
- 理解 RIPv1使用广播更新路由与RIPv2使用组播更新路由的区别
- 前端学习(2081):三种方案对比es5没有闭包
- python中 1.34e3_Python快速编程入门——第2章 Python基础语法
- Linux下ACE、xml解析库开发环境搭建
- Linux中main和初启函数,main 中的 argv和argc 到底是个啥意思?
- 打造狂拽炫酷的主流自定义侧滑控件(仿酷狗和QQ5.0)
- PostgreSQL数据库WAL——RM_HEAP_ID日志记录动作
- 房东违反房屋租赁合同会怎么进行赔偿
- CentOS安装NETCDF
- 华为认证的含金量高吗?
- 淘特(淘宝特价版)关键词搜索
- 全藏字【藏文字】的生成算法设计
- 视频压缩技术及安卓中用法
- Retrofit简介
- nodejs爬虫大作业项目