У меня есть Алгоритм, который создает 2D-массив, содержащий сумму всех возможных значений. Например, для массива [1,5,8,4,5]
2D-массив sums[1][3]
должен возвращать сумму индекса 1-3 в исходном массиве (17). Я считаю, что с точки зрения большого О, эффективность равна O (N). Есть ли способ сделать этот алгоритм более эффективным?Как я могу сделать этот алгоритм более эффективным?
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)). http://stackoverflow.com/a/37907843/3160529 – Shubham
Это именно то, что мне было интересно. Это вопрос в моих лекционных слайдах, и я пытался это понять. –