长治做网站公司,网页游戏排行2019,企业计划书范文完整版,番禺人才网入库考试原题链接#xff1a;202.快乐数
要记住的就是#xff0c;需要判断元素是否出现过#xff0c;或者是否在集合里存在#xff0c;就可以考虑用哈希法去做
因为是每一位都进行平方后相加得到新的数#xff0c;所以需要单独写一个函数进行每位相加的运算得到最终的sum
不断重…原题链接202.快乐数
要记住的就是需要判断元素是否出现过或者是否在集合里存在就可以考虑用哈希法去做
因为是每一位都进行平方后相加得到新的数所以需要单独写一个函数进行每位相加的运算得到最终的sum
不断重复的话直接写一个while(1)死循环每次循环都求得sum此时需要判断sum是否为1 如果为1则代表是快乐数 直接返回true即可
此时直接进行判断直接进set内查找sum查看是否存在 如果不存在则将sum存入set。 如果存在则代表进入了循环直接返回false即可
关于set.find(sum) set.end()的解释 set.find(sum) 如果sum存在于set.set.find 返回的是指向sum的迭代器此时迭代器(set.find(sum))set.end()则为为假进入else语句内执行 如果sum不存在于setset.find()返回的就是set.end(),此时if内的条件为set.end() set.end()故为真所以进入了if语句内执行
全代码
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_setint set;while(1){int sum getSum(n);if(sum 1){//sum 1则代表是快乐数 返回truereturn true;}if (set.find(sum) set.end()) {//如果在set内没有出现过 则存入setset.insert(sum);} else {//如果sum在set内出现过则代表进入无限循环直接返回falsereturn false;}n sum;}}
};