力扣 202快乐数
快乐数这题有两个关键
一个是求n的 各个位上平方和
另一个是判断是否为快乐数的依据是是否在哈希表中找到已经出现过的数
1求各个位上平方和方法
定义sum
sum = N除以十取余的平方和
n/10
循环终止条件是n=0
2查找一个数是否出现,用哈希表unordered_set ,
插入用set.insert
找到重复出现的数,用set.find(n) != set.end()
/*
* @lc app=leetcode.cn id=202 lang=cpp
*
* [202] 快乐数
*/
// @lc code=start
class Solution {
public:
int getSum(int n)
{
int sum = 0;
while(n)
{
sum += (n%10)*(n%10);
n = n/10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> set;
while(1)
{
n = getSum(n);
if(n == 1) return true;
if(set.find(n) != set.end())
{
return false;
}
else{
set.insert(n);
}
}
}
};
// @lc code=end
原文地址:https://blog.csdn.net/weixin_43261508/article/details/140361454
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!