zoukankan      html  css  js  c++  java
  • 快慢指针--快乐数判断

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/happy-number

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

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



    1、关键是跳出无限循环

    2、快乐数判断有固定规律,不快乐数会陷入重复数的循环,且不包含1(如果是1就快乐了呀!)

    3、判断跳出循环时是不是1 是1就快乐 不是1不快乐

    4、快慢指针跳出无限循环,类似判断环形链表

    class Solution {
        public boolean isHappy(int n) {
            int fast;
            int slow;
            fast=slow=n;
            do{
                slow = sum(slow);
                fast = sum(fast);
                fast = sum(fast);
            }while(fast!=slow);
            if(fast==1) return true;
            else return false;
        }
    
        int sum(int num)
        {
            int sum=0;
            while(num!=0)
            {
                sum+=(num%10)*(num%10);
                num = num/10;
            }
            return sum;
        }
    }
  • 相关阅读:
    Problem C: 类的初体验(V)
    接口与继承
    类和对象
    java函数方法
    数组
    string类的一些函数方法
    java语法基础
    大道至简——做个懒人
    java编程 求和
    编程的精义
  • 原文地址:https://www.cnblogs.com/luiyuying/p/12554997.html
Copyright © 2011-2022 走看看