网站建设新手教程,网站建设计入哪个明细科目,厦门高端网站建设,网络营销论文8000字今天分享的题目是快乐数#xff1a; 快乐数的定义如下#xff1a; 快乐数#xff08;Happy Number#xff09;是指一个正整数#xff0c;将其替换为各个位上数字的平方和#xff0c;重复这个过程直到最后得到的结果为1#xff0c;或者无限循环但不包含1。如果最终结果为…今天分享的题目是快乐数 快乐数的定义如下 快乐数Happy Number是指一个正整数将其替换为各个位上数字的平方和重复这个过程直到最后得到的结果为1或者无限循环但不包含1。如果最终结果为1则该数为快乐数如果最终结果不为1且进入了循环则该数不是快乐数。 解题思路快乐数的迭代过程是一个无环的过程而不是快乐数则会出现环导致无限循环。 eg19-82-68-100-1 2-4-16-37-58-89-145-42-20-4. 我们观察发现如果不是快乐数会出现重复的数字因此我们根据这一点可以选择使用set集合进行题解。 下面结合代码进行思路的进一步讲解
class Solution {
//用于计算每个数字的平方和并进行返回public int comsum(int x){int sum0;int k0;while(x0){kx%10;sumk*k;xx/10;}return sum;}public boolean isHappy(int n) {SetInteger set1new HashSet();//将n存入set1中set1.add(n);while(n!1){//n每次循环进行更新为它的平方和ncomsum(n);//如果set集合中出现的重复的说明不是快乐数if(!set1.add(n)){return false;}}//n1为快乐数return true;}
}那么还有一个需要注意的点是if(!set1.add(n))这个判断条件的执行顺序我们首先执行的是set.addn然后进行取反的操作。 小tipsset.addn的返回值说明如果n在set集合中返回false如果n不在这个集合中那么返回true。这一点也需要着重注意。 那么本道题的解题就到此结束了创作不易希望给博主点个小爱心!xx