【发布时间】:2016-11-10 19:45:21
【问题描述】:
我有一个算法,它产生一个包含所有可能值之和的二维数组。例如,对于数组 [1,5,8,4,5],二维数组 sums[1][3] 应返回原始数组 (17) 中索引 1-3 的总和。我相信就大O而言,效率是O(N2)。有什么办法可以让这个算法更有效率吗?
public static int[][] sum(int[] values){
int[][] sums = new int[values.length][values.length];
for(int x = 0; x < values.length; x++){
int total = 0;
for(int y = x; y < values.length; y++) {
total += values[y];
sums[x][y] = total;
}
}
return sums;
}
【问题讨论】:
-
您需要填写一个大小为
N^2的表格。你怎么能在不到O(N^2)的时间内做到这一点?? -
类似的问题。可以在 O(nlog(n)) 中完成。 stackoverflow.com/a/37907843/3160529
-
这正是我想知道的。这是我演讲幻灯片中的一个问题,我一直在努力理解它。
标签: algorithm data-structures time-complexity big-o