2023每日刷题(二十八)
Leetcode—202.快乐数
快慢指针思想
通过手玩2,可以发现
会走入一个循环,并且fast和slow会在一个数字相遇,以下也大概花了一下推倒出来了。如果slow不是因为1和fast相等的,就说明它不是快乐数!
快慢指针实现代码
long long func(long long num) {
long long sum = 0;
while(num) {
int i = num % 10;
sum += i * i;
num /= 10;
}
return sum;
}
bool isHappy(int n) {
long long slow = n;
long long fast = n;
do {
slow = func(slow);
fast = func(fast);
fast = func(fast);
}while(slow != fast);
if(slow == 1) {
return true;
}
return false;
}
运行结果
集合判断循环的思路的实现代码
class Solution {
public:
int func(int num) {
int sum = 0;
while(num) {
int i = num % 10;
sum += i * i;
num /= 10;
}
return sum;
}
bool isHappy(int n) {
set<int> s;
int sum = func(n);
while(s.find(sum) == s.end()) {
s.insert(sum);
if(sum == 1) {
return true;
}
sum = func(sum);
}
return false;
}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!