gpt4 book ai didi

Java:检查 int 中的数字是否按升序的快速方法

转载 作者:行者123 更新时间:2023-11-30 03:02:56 24 4
gpt4 key购买 nike

我正在编写一个程序来查找所有 Armstrong numbers在零和 Integer.MAX_VALUE 之间的范围内。时间限制为 10 秒。我发现最耗时的方法是通过仅选择那些数字按升序排列(如果有则尾随零)来缩小要处理的数字范围的方法。在我的机器上运行大约需要 57 秒。有什么办法可以让它更快吗?

static boolean isOK(int x)
{
int prev = 0;

while(x > 0)
{
int digit = x % 10;
if((digit > prev || digit == 0) && prev != 0) return false;
x /= 10;
prev = digit;
}
return true;
}

此方法将要处理的号码数量从 2.147.483.647 减少到 140.990。

最佳答案

也许不必筛选所有整数,只需按升序构建数字集合即可。我认为你可能需要一组字符串(而不是整数),因为它更容易构建(通过附加/前置字符递归地),然后你只需要单独的“数字”来进行功率测试。

My take on the problem ,在大约 6 秒内变为 Long.MAX_VALUE(19 位数字),并在大约 1 小时内一直变为 39 位

关于Java:检查 int 中的数字是否按升序的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487030/

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