在做题中学习(38):快乐数
2023-12-22 14:05:29
理解:根据定义一共有两种情况
1.最后变为1
2.最后变为环
思路:可以把两个情况都认为有环,第一个是环一直为1
(快满指针法) 定义一个快指针和慢指针,慢指针走一步,快指针走两步。
而这里的指针不是真正的指针,可以用整型值代替它所代表的意义,比如:19会变化为82,那slow就由19经过平方和变化为82,fast走两步相当于19变化为82在变化为68,相当于变化两次,用这样伪指针的做法来表示快慢指针。
解释一下下面代码:把求平方和封装成函数更方便,fast首先定义为bitsum(n)是因为若定义为n循环进不去。
class Solution
{
public:
int bitsum(int n)
{
int sum = 0;
while(n)
{
int t = n%10;
sum += t*t;
n = n/10;
}
return sum;
}
bool isHappy(int n)
{
int slow = n, fast = bitsum(n);
while(slow!=fast)
{
slow = bitsum(slow);
fast = bitsum(bitsum(fast));
}
return slow ==1;
}
};
文章来源:https://blog.csdn.net/yiren_liusong/article/details/135149984
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!