刷题笔记 day5

力扣  202 快乐数

刷题笔记 day5_第1张图片

 刷题笔记 day5_第2张图片

 

首先来分析什么样的数是快乐数,

刷题笔记 day5_第3张图片

 解题思路:

1)定义快慢指针 ; 2)快指针走两步,慢指针走一步 ;3)两个指针相遇时判断相遇的数值是否为1。

怎样处理 取各分位数的平方和?

    
int isSum(int n)
{
    int sum = 0;//用来记录各分位的平方和
    while(n !=0)
    {
        int t = n%10;
        sum += t*t;
        n/=10;
    }
    return sum;
}

 

代码实现:

class Solution {
public:
    int  isSum(int n)
    {
        int sum = 0;
        while(n !=0)
        {
            int t = n%10;
            sum += t*t;
            n /=10;
        }
        return sum;
    }
    bool isHappy(int n) {
        int slow = isSum(n);
        int fast = isSum(isSum(n));
        while(fast != slow)
        {
            fast = isSum(isSum(fast)) ;
            slow = isSum(slow);
        }
        return slow ==1;
    }
};

 

你可能感兴趣的:(数据结构,C++,笔记,数据结构,leetcode,算法)