HackerRank N系列,因超时而终止

时间:2016-12-07 03:37:56

标签: java timeout

https://www.hackerrank.com/challenges/summing-the-n-series 我试图通过计算一次最大输入的总和来优化运行时间,但是在对非常大的输入(例如this one)运行时我仍然有一段时间。有没有办法改善我的代码?或者是一个简单但更有效的方法解决这个问题?

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int numLine = scan.nextInt();
        List<Integer> input = new ArrayList<>();
        List<Long> result = new ArrayList<>();
        for (int line = 0; line < numLine; line++) { input.add(scan.nextInt()); }
        scan.close();

        int max = Collections.max(input);
        int i = 1;
        long sum = 0;
        while (i <= max) {
            sum = sum + 2*i - 1;  // n*n - (n-1)*(n-1) = 2*n - 1
            result.add(sum);
            i++;
         }
        for (int num : input) {
             System.out.println(result.get(num-1));
        }
     }
 }

0 个答案:

没有答案