避免hackerrank中的超时错误

时间:2017-09-22 13:44:58

标签: java runtime-error

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    long arr[]=new long[n];
    long m = in.nextLong();
    for(int a0 = 0; a0 < m; a0++){
        long a = in.nextLong();
        long b = in.nextLong();
        long k = in.nextLong();
        for(int i=(int)a-1;i<(int)b;i++)
            arr[i]+=k;
    }
    long large=-999;
    for(int i=0;i<n;i++)
    {  if(arr[i]>large)
         large=arr[i];
    }
    System.out.println(large);
    in.close();
}
}

这是我对#34;的回答。您将获得一个大小为n的列表(1索引),用零初始化。您必须对列表执行操作并输出列表中所有n个元素的最大值。对于每个操作,您将获得三个整数a,b和k,并且您必须将值k添加到从索引a到b(包括两者)的所有元素。&#34; 但是我得到了&#34; Timedout错误&#34;它的一半。任何人都可以在这里提出一些想法吗?

1 个答案:

答案 0 :(得分:0)

尝试在循环中使用long as counter,为什么要转换为int? 如果你将long转换为int,你可能会出现溢出错误,并且可能永远不会满足循环的结束条件

for(long i=a-1;i<b;i++)