leetcode202. 快乐数

举报
兔老大 发表于 2021/04/23 01:20:33 2021/04/23
【摘要】 编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 示例:  输入: 19 输出: true 解释:  12 + 92 = 82 82 + 22 = 68 62 +...

编写一个算法来判断一个数是不是“快乐数”。

一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。

示例: 

输入: 19
输出: true
解释: 
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

思路:如何判断死循环?加一个set


  
  1. class Solution {
  2. public boolean isHappy(int n) {
  3. Set<Integer> set = new HashSet<>();
  4. set.add(n);
  5. while(n != 1){
  6. n = change(n);
  7. if(set.contains(n)) return false;
  8. set.add(n);
  9. }
  10. return true;
  11. }
  12. public int change(int n){
  13. int sum = 0;
  14. int num;
  15. while(n != 0){
  16. num = n%10;
  17. n /= 10;
  18. sum += num*num;
  19. }
  20. return sum;
  21. }
  22. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/104106286

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。