вызов кода
Код: Выделить всё
class Solution {
Integer max = Integer.MIN_VALUE;
int solve(int[] freq) {
dfs(freq, 0, 0)
}
return max;
}
например, ['abc', 'de'] -> [ 7, 24]
где 7(
Код: Выделить всё
111и 24(
Код: Выделить всё
11000Первый код:
Код: Выделить всё
void dfs(int[] freq, int idx, int value) {
max = Math.max(max, value);
if (idx >= freq.length) return;
dfs(freq, idx + 1, value | freq[idx]);
dfs(freq, idx + 1, value);
}
И второй код:
Код: Выделить всё
void dfs(int[] freq, int idx, int value) {
max = Math.max(max, value);
for (int i = idx; i < freq.length; i++) {
dfs(freq, i + 1, value | freq[i]);
}
}
Правильно ли сказать, что второй код имеет временную сложность: O(n^m), где n — максимальная высота рекурсивного дерева, а m — сложность цикла?
Кроме того, когда я отправляю оба кода, они имеют одинаковую среду выполнения. Это также из-за переменной idx в цикле for второго кода, благодаря которой он становится эквивалентным первому коду?
Подробнее здесь: https://stackoverflow.com/questions/784 ... -iteration
Мобильная версия