专业的河南网站建设公司排名,科技创新论文800字,怎么样创建网站,网站建设后怎样发信息欢迎关注点赞评论#xff0c;共同学习#xff0c;共同进步#xff01;
------持续更新蓝桥杯入门系列算法实例--------
如果你也喜欢Java和算法#xff0c;欢迎订阅专栏共同学习交流#xff01;
你的点赞、关注、评论、是我创作的动力#xff01;
-------希望我的文章…欢迎关注点赞评论共同学习共同进步
------持续更新蓝桥杯入门系列算法实例--------
如果你也喜欢Java和算法欢迎订阅专栏共同学习交流
你的点赞、关注、评论、是我创作的动力
-------希望我的文章对你有所帮助-------- 一、题目描述
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为
对于一个正整数每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true 不是则返回 false 。 示例 1 输入n 19
输出true
解释
12 92 82
82 22 68
62 82 100
12 02 02 1示例 2 输入n 2
输出false二、解题思路
一、哈希解法
1解题思路 1、首先明确对于n的每位数字平方和的求解是一个重复工作因此可以写一个方法用于计算n的求值和sum 2、其次判断是否一个死循环的数即最后得不到1。 3、因此使用Set集合来校验是否出现过相同的数使用contains()方法判断即可。 2代码实现
public boolean isHappy(int n) {//快乐数哈希表法SetInteger Happynew HashSet();while (n!1!Happy.contains(n)){Happy.add(n);//没有重复数即加入集合nSum(n);}return n1;//判断是否n为1}
public static int Sum(int n){int sum0;while (n0){int tempn%10;//求各位上的数sumtemp*temp;n/10;//缩位}return sum;} 二、双指针快慢指针法
1解题思路 1、同样需要用到Sum求值静态方法。 2、快慢指针原理是即当出现循环的n值时fast指针由于要多走一步换成坐标系参考即相当slow于原地不动fast每次移动一格如果是循环那么fast必然会再次遇到slow。 3、当slow与fast相遇时如果是1则符合条件否则为循环的值false 2代码实现 public boolean isHappy2(int n)//快慢指针法{int slown,fastn;//同时出发while (fast!1fast!slow){slowSum(slow);fastSum(fast);fastSum(fast);}return fast1;}public static int Sum(int n){int sum0;while (n0){int tempn%10;sumtemp*temp;n/10;}return sum;} 发文不易恳请大佬们高抬贵手
点赞随手点赞是种美德是大佬们对于本人创作的认可
评论往来无白丁是你我交流的的开始
收藏愿君多采撷是大佬们对在下的赞赏