Я пытаюсь найти что-то эквивалентное remove_range
(которого, конечно, не существует), как показано ниже. Кажется, нет простого способа реализовать эту функциональность.Как удалить диапазон из массива
a = [0,2,8,2,4,5,]
b = a.remove_range(1,2) #remove items between index 1 and 2 ,inclusively
#expect b == [0,2,4,5]
b = a.remove_range(3,4)
#expect b == [0,2,8,5]
Пожалуйста, проверьте по крайней мере, выше двух случаях, прежде чем разместить свое решение :)
Предположим, размер диапазона M, эта операция должна требует O (1) пространство и O (NM) время сложность.
EDIT: Я вижу, что люди продолжают размещать a - a[range]
. Но это неверно, т. Е. Удалить элементы в [range], а не удалять элемент, принадлежащий диапазону.
a - a[1..2]
вернет [0, 4, 5]
. Однако мы хотим сохранить 3-й элемент, который равен 2
.
Является ли Ruby API/грамматическим вопросом или вопросом кодирования/алгоритма? – coderz
+ coderz both :) – pierrotlefou
Я не согласен, что он «не существует». Это просто не названо так, как вы думаете. –