本文共 1137 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要计算给定正数数列中所有可能的连续片段所包含的所有数的总和。通过分析,我们可以发现每个数在不同片段中出现的次数,可以利用这一点来高效地计算总和。
import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = Integer.parseInt(scanner.nextLine()); String[] numbersStr = scanner.nextLine().split(" "); double[] numbers = new double[numbersStr.length]; for (int i = 0; i < numbersStr.length; i++) { numbers[i] = Double.parseDouble(numbersStr[i]); } double sum = 0.0; for (int k = 0; k < N; k++) { int count = (k + 1) * (N - k); sum += numbers[k] * count; } System.out.println("{0:.2f}".format(sum)); }} 这种方法的时间复杂度是O(N),能够在合理时间内处理较大的输入规模。
转载地址:http://ejnbz.baihongyu.com/