LeetCode 202.快乐数 C++
思路:
用快慢指针来进行解答,可以将其看做一个回环链表,慢指针完成一次平方和操作,快指针完成两次平方和操作,当快慢指针相遇时,判断快慢指针是否为1(为1以后无论怎么取平方和都会为1),如果为1就是快乐数,否则不是。
代码:
class Solution { public:int Pow(int n) //求平方和函数{int a = 0;while(n){a += pow(n % 10, 2);n /= 10;}return a;}bool isHappy(int n) {int slow = n;int fast = n;do{slow = Pow(slow);fast = Pow(fast);fast = Pow(fast);} while(slow != fast);if(slow == 1) //有一个等于1就是快乐数return true;elsereturn false;} };