202. 快乐数 【隐藏环】

 

分析:对于无限循环的情况,在计算中间的下一个值的时候会出现和已经计算出来的值的重复情况

  • 如果用一个链表存储这些计算的中间数,则链表中存在环,如果这个环的起点是1那么这个n是快了数否则不是快乐数
  • 判断链表中是否有环可以使用快慢指针的做法,慢指针走一步快指针走两步
 1 class Solution {
 2     // 模拟链表的快慢指针
 3     public int sum(int n){
 4         int result = 0;
 5         while(n!=0){
 6             result += (n%10)*(n%10);
 7             n = n/10;
 8         }
 9         return result;
10     }
11     public boolean isHappy(int n) {
12         int low = n;
13         int fast = n;
14         do{
15             low = sum(low);
16             fast = sum(fast);
17             fast = sum(fast);
18         }while(low!=fast);
19         if(low==1){
20             return true;
21         }
22         return false;
23     }
24 }
posted @ 2022-07-13 11:27  yky_xukai的胡思乱想  阅读(30)  评论(0)    收藏  举报