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));
}
}
}