Junior — Middle
93
Come determinare il tempo di esecuzione dell'operazione di rimozione dei duplicati da un array ordinato?
Risposta dell'AI
sobes.tech AI
Время выполнения операции удаления дубликатов из отсортированного массива обычно оценивается как O(n), где n — длина массива. Это связано с тем, что при отсортированном массиве дубликаты идут подряд, и достаточно одного прохода по массиву, чтобы их удалить.
Пример на Java:
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1; // новая длина массива без дубликатов
}
Здесь мы проходим по массиву один раз, сравнивая текущий элемент с предыдущим уникальным, и копируем уникальные элементы вперед. Таким образом, алгоритм работает за линейное время O(n).