如何解决我的Java代码中的超时错误:
此代码首先查找元素的反向,然后找出实际值与反向值之间的差(如果该差可被k整除,然后增加计数器)
请找到以下代码:
//all header files are included
public class Solution {
// Complete the beautifulDays function below.
static int beautifulDays(int i, int j, int k) {
int count=0;
for(int a=i;a<=j;a++)
{
int p=a;
int t=0,r=0;
while(a>0)
{
r=a%10;
t=t*10+r;
a=a/10;
}
if((t-p)%k==0)
count++;
}
return count;
}
// all other code of input and calling methods
答案 0 :(得分:1)
本节中有一个无限循环:
for (int a = i; a <= j; a++) {
int p = a;
int t = 0, r = 0;
while (a > 0) {
r = a % 10;
t = t * 10 + r;
a = a / 10; //OUCH!
}
}
让我们对此进行分析。
a
从1
增加到i
j
,直到达到零为止。猜猜哪一个赢了? (无法猜测吗?尝试使用铅笔和纸并手动执行这些循环。这是有用的练习。)
这意味着....外循环永远不会终止。
解决方案:在内循环中使用 different 循环变量。