Обновите массив несколько раз за меньшее времяJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Обновите массив несколько раз за меньшее время

Сообщение Гость »


Мне нужно выполнить несколько обновлений моего массива на основе предоставленных команд. Я хочу уменьшить временную сложность этого процесса.

У меня есть массив целых чисел A и еще один двумерный список, представляющий команды

Формат команды такой:
[*][1, p, q], если это тип 1, выберите элемент с индексом p в массиве A и установите для него значение q [*][2, -1, r], если это тип 2, то найдите все элементы в массиве A, которые меньше r, и обновите их до r, значение -1 не имеет значения. , мы можем это игнорировать.
Пример:

A = [2,4,1,4] команды = {[1,1,30], [1,2,4], [2,-1,10]}; Результат = [10,30,10,10] Объяснение: команда1 = [1,1,30] , A = [2,4,1,4] меняется на [2,30,1,4] команда2 = [1,2,4] , A = [2,30,1,4] меняется на [2,30,4,4] команда3 = [2,-1,10], A = [2,30,4,4] меняется на [10,30,10,10] поэтому результат [10,30,10,10] Вот мой код:

public static int[]solve(int n, int[] A, int[][] команды) { for (int[] команда: команды) { если (команда[0] == 1) { int p = команда [1]; int q = команда [2]; А[р] = q; } иначе если (команда[0] == 2) { int r = команда[2]; for (int i = 0; i < n; i++) { если (A < r) { А[я] = г; } } } } вернуть А; } Размер моего массива — до 10^5, а команд — до 10^9.

Как сократить временные затраты на это. Используя for (int i = 0; i < n; i++) внутри else, если условие занимает много времени, я хочу сократить это время.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»