【双指针_快乐数_C++】

题目解析
快乐数

【双指针_快乐数_C++】_第1张图片
【双指针_快乐数_C++】_第2张图片
在这里插入图片描述
【双指针_快乐数_C++】_第3张图片

算法原理

快慢双指针

1、定义快慢指针
2、慢指针每次向后移动一步,快指针每次向后移动两步。
3、判断相遇的时候的值

编写代码

class Solution {
public:
    int num_sum(int n){
        int sum = 0;
        while(n!=0){
            int t = n%10;
            sum+=t*t;
            n = n/10;
        }
        return sum;
    }
    bool isHappy(int n) {
        //先去定义一个求每一位数的平方和的函数
        int slow = n;//第一个数
        int fast = num_sum(n);//第二个数

        while(slow!=fast){
            slow = num_sum(slow);//走一次
            fast = num_sum(num_sum(fast));//走两次
        }
        return slow == 1;//slow == 1 或者 fast == 1
    }
};

你可能感兴趣的:(双指针算法,c++,开发语言)