Leetcode 202.快乐数(哈希容器来检测是否出现重复)
传送门:力扣
所学知识:
1.求和过程,去数值的单数操作,使用while(n)来操作。很强。
int getSum(int n) {int sum = 0;while (n) {sum += (n % 10) * (n % 10);n /= 10;}return sum;}
2.通过unordered_set哈希容器来检测是否进入无限循环中。
if(set.find(sum)!=end()){return false;
}
而且哈希容器所需要的内存空间比数组要高。所以并不是所有题目都无脑使用哈希容器
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<unordered_set>
using namespace std;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;}}
};
int main() {Solution solution;cout << solution.isHappy(19) << endl;
}
Leetcode 202.快乐数(哈希容器来检测是否出现重复)相关推荐
- 129. Leetcode 202. 快乐数 (哈希表)
class Solution:def isHappy(self, n: int) -> bool:set_ = set()while 1:sum_ = self.getSum(n)if sum_ ...
- LeetCode 202. 快乐数【哈希表】
202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和. 然后重复这个过程直到这个数变为 1,也可能是 无限 ...
- leetcode 202. 快乐数 思考分析(哈希集合与双指针解)
1.题目 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变 ...
- LeetCode 202. 快乐数(快慢指针)
1. 题目 2. 解题 一个数经过若干次各位数平方和后,会等于它自己 使用类似环形链表的快慢指针法,最终快慢指针相遇,若不为1则是不快乐数 class Solution {public:int bit ...
- 2022-1-18 Leetcode 202.快乐数
问题就在于如何判断无限循环? 我是要求最多循环20次 class Solution {public:bool isHappy(int n) {int sum = 0;int a = 0;int cou ...
- leetcode 202 快乐数
class Solution { public:bool isHappy(int n) {unordered_map<int,bool> m;while(n!=1){m[n]=true;i ...
- Leetcode 202. 快乐数 解题思路及C++实现
解题思路: 用递归的方法,出现1,就返回true,这里用了 unordered_map 来记录是否会出现循环.(也可以用unordered_set) 通过计算余数和商,来得到每个位置数字的平方和.具体 ...
- 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)
目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...
- LeetCode Algorithm 202. 快乐数
202. 快乐数 Ideas 快乐数的判断逻辑其实挺简单的,按照定义去循环执行就可以了. 关键是如果不是快乐数怎么结束循环. 我们猜测会有以下三种可能: 最终会得到 1 最终会进入循环 值会越来越大, ...
最新文章
- 我对于js注入的理解
- python之⾯向对象基础
- 鑿婂瓙鏇版祴璇曡崏绋縶29C28FD771BA4B0D8693}
- HDFS EditsLog和FsImage日志机制
- 线程池应该设置多少核心线程数——Java多线程系列学习笔记
- 拓端tecdat|R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等
- android:digits 代码设置,EditText中android:digits失效问题
- 删除android电视软件下载,【教程】无需root!卸载小米电视/盒子内置应用竟如此简单...
- HTML为图片添加Alt描述,图片标签alt
- BC #38 / HDU5208 Where is Bob · 数位dp
- 论文流程图——使用VISIO制作论文中的流程图[进阶版]
- 字蛛(FontSpider,中文字体压缩器)网页自由引入中文字体
- 2014游泳记录 01
- 空间实景三维激光点云数据处理服务来了!
- css内联样式_如何覆盖内联CSS样式
- 51单片机入门教程(1)——点亮一个LED灯
- 33家国内外知名的手机广告平台的SDK名单汇总,吐血推荐
- 收集一些有用的php函数---from cmstop
- otis电梯服务器tt使用说明_奥的斯电梯服务器使用说明
- python教你如何跳过验证识别登录并自动发送弹幕