当前位置: 首页 > 后端技术 > Java

LeetCode-202-HappyNumber

时间:2023-04-01 15:37:02 Java

HappyNumber题目描述:写一个算法判断一个数n是否是happynumber。“快乐数字”的定义是:对于一个正整数,每次用数字在每个位置的平方和代替数字。然后重复这个过程,直到这个数变成1,也可能是无限循环,永远不会变成1。如果能变成1,那么这个数就是一个快乐的数。如果n是一个快乐的数字,则返回true;如果不是,则为假。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:暴力破解法由于int类型的最大值位数的平方和相加的结果也是一个有限数,如果某个数不是happynumber,之后肯定会出现循环多次添加平方和。循环结束,因为重新计算的结果是一样的。具体过程如下。使用appearedNums记录出现过的数字:num从n开始,判断num是否出现在appearedNums中。如果出现,则发生循环,直接返回false;如果没有出现过,则计算每个数字的平方和是否为1,如果为1,则此数为快乐数;否则,继续将sum赋值给num,继续下一个判断。importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_202{publicstaticbooleanisHappy(intn){if(n==1){returntrue;}ListappearedNums=newArrayList<>();整数=n;while(!appearedNums.contains(num)){appearedNums.add(num);整数总和=0;for(charc:String.valueOf(num).toCharArray()){intcur=Integer.valueOf(String.valueOf(c));总和+=当前*当前;}如果(总和==1){返回真;}else{num=sum;}}返回假;}publicstaticvoidmain(String[]args){System.out.println(isHappy(2));}}【每日留言】顺其自然,生活会顺畅很多,心胸豁达,世界会温柔很多。