You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: jcf.md
+108Lines changed: 108 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -314,6 +314,114 @@ _O(N)_. Вставка элемента в конец списка осущес
314
314
## Предложите эффективный алгоритм удаления нескольких рядом стоящих элементов из середины списка, реализуемого `ArrayList`.
315
315
Допустим нужно удалить `n` элементов с позиции `m` в списке. Вместо выполнения удаления одного элемента `n` раз (каждый раз смещая на 1 позицию элементы, стоящие «правее» в списке), нужно выполнить смещение всех элементов, стоящих «правее» `n + m` позиции на `n` элементов «левее» к началу списка. Таким образом, вместо выполнения `n` итераций перемещения элементов списка, все выполняется за 1 проход.
316
316
317
+
Пример:
318
+
319
+
```java
320
+
packagetest1;
321
+
322
+
importjava.io.*;
323
+
importjava.util.ArrayList;
324
+
325
+
publicclassMain {
326
+
//позиция с которой удаляем
327
+
privatestaticint m =0;
328
+
//количество удаляемых элементов
329
+
privatestaticint n =0;
330
+
//количество элементов в списке
331
+
privatestaticfinalint size =1000000;
332
+
//основной список (для удаления вызовом remove() и его копия для удаления путём перезаписи)
0 commit comments