我一直在短时间内解决竞争性编码问题,我观察到了一些问题。有时,在涉及数组操作或加法或乘法的任何解决方案中,某些测试用例给了我TLE(超出时间限制)。
我使用了整数变量。当我将这些变量更改为 long 类型时,该测试用例的执行时间会减少,有时会使我的解决方案除外100%而不是部分接受。
我的问题是,如何,为什么,是这种情况?在哪种情况下(长期以来)不成立?我认为在这种情况下不使用long over int的唯一缺点是内存消耗会更高。
UPDATE - 代码示例:这是我编写的示例代码,用于将给定的数字数组向右旋转K个位置并显示输出。
public static void main(String [] args)
{
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int numTestCases = sc.nextInt();
for(int i = 0; i< numTestCases;i++)
{
int arraySize = sc.nextInt();
int offset = sc.nextInt();
int [] array = new int[arraySize];
if(offset>=arraySize)
offset = offset%arraySize;
int count = 0;
while(count<arraySize)
{
array[offset] = sc.nextInt();
offset = (offset+1)%arraySize;
count++;
}
for(int j = 0; j< arraySize; j++) {
sb.append(array[j]);
sb.append(" ");
}
sb.append("\n");
}
System.out.println(sb.toString());
sc.close();
}
其中一个测试用例为此代码提供了TLE。但是,当将数组类型更改为long时,该测试用例已通过。
测试用例包含89384个整数数组(均小于100 - 或至少在 int 范围内)并且必须向右旋转930886个位置。