#python #algorithm #data-structures #stack
#python #алгоритм #структуры данных #стек
Вопрос:
У меня есть массив, который состоит из повторяющихся элементов, например
arr = [1, 2, 3, 0, 2, 1]
Теперь я хочу хранить элементы в стеке таким образом, чтобы верхняя часть стека всегда давала мне элемент, который повторяется, и он появляется перед всеми другими повторяющимися элементами, которые появляются впоследствии.
например,
arr = [1, 2, 3, 0, 2, 1, 3]
stack = [3, 1, 2]
Здесь 1,2 и 3 являются повторяющимися элементами, а 2 появляются перед всеми другими повторяющимися элементами, поэтому он находится на вершине стека, затем 1, который предшествует 3, и, наконец, 3
другой пример
arr = [1,2,0,2,3,0,1]
stack = [1, 0, 2]
вы можете предположить, что элементы повторяются только дважды.
Комментарии:
1. как вы пытались это решить? где вы застряли?
Ответ №1:
Вы могли бы отслеживать все уникальные элементы, которые можно добавить в стек:
arr = [1, 2, 0, 2, 3, 0, 1]
unique = []
stack = []
for a in arr:
if a not in unique:
unique.append(a)
else:
stack.insert(0, a)
print(stack)
Out:
[1, 0, 2]
Ответ №2:
Я вижу такой алгоритм:
1. Find repeated elements
2. Iterate the initial list from the tail to the head
2.1. Check if an element is in the repeated elements list
2.1.1 If yes -> add this item to the new list
2.2 break when len(newlist) == len(repeated_list)