• 快乐数问题


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

    示例: 

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

    //这题可以用快慢指针的思想去做,有点类似于检测是否为环形链表那道题
    //如果给定的数字最后会一直循环重复,那么快的指针(值)一定会追上慢的指针(值),也就是
    //两者一定会相等。如果没有循环重复,那么最后快慢指针也会相等,且都等于1。
    class Solution {
        public boolean isHappy(int n) {
            int fast=n;
            int slow=n;
            do{
                slow=squareSum(slow);
                fast=squareSum(fast);
                fast=squareSum(fast);
            }while(slow!=fast);
            if(fast==1)
                return true;
            else return false;
        }
        
        private int squareSum(int m){
            int squaresum=0;
            while(m!=0){
               squaresum+=(m%10)*(m%10);
                m/=10;
            }
            return squaresum;
        }
    }
    

      

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/happy-number
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    新的
    曾经写过得太监小说3《缱绻修真界》
    Python的from和import用法
    python几个有意思的小技巧
    leetcode 最长回文串
    leetcode-快速排序C++自写
    leetcode 面试题 01.06. 字符串压缩
    leeetcode 剑指 Offer 29. 顺时针打印矩阵
    leetcode 70. 爬楼梯 续
    leetcode 1143. 最长公共子序列-华为
  • 原文地址:https://www.cnblogs.com/wangyu19900123/p/12184937.html
Copyright © 2020-2023  润新知