gpt4 book ai didi

algorithm - leetcode 中这个快乐数字的解法有无限循环吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:39:21 25 4
gpt4 key购买 nike

Here是leetcode中的快乐数问题

这是 one解决方案

使用弗洛伊德循环检测算法。

int digitSquareSum(int n) {
int sum = 0, tmp;
while (n) {
tmp = n % 10;
sum += tmp * tmp;
n /= 10;
}
return sum;
}

bool isHappy(int n) {
int slow, fast;
slow = fast = n;
do {
slow = digitSquareSum(slow);
fast = digitSquareSum(fast);
fast = digitSquareSum(fast);
} while(slow != fast);
if (slow == 1) return 1;
else return 0;
}

是否有机会无限循环?

最佳答案

如果迭代 digitSquareSum 可以无限增长,那么只会有一个无限循环。但是当用 n 位数字调用它时,结果总是小于 100n,所以这不会发生,因为对于 n >= 4,结果总是小于用作输入的数字。

所有这些都忽略了大多数语言中计算机中的整数不能任意大,如果结果可以在数学上增长到无穷大,您将遇到整数溢出。结果可能会出错,但仍然不会出现无限循环。

关于algorithm - leetcode 中这个快乐数字的解法有无限循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53446492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com