Pergunta

Qual é a maneira oficial de espreitar em uma pilha de Python, criada pelo HEAPQ Libs? Agora eu tenho

def heappeak(heap):
  smallest = heappop(heap)
  heappush(heap, smallest)
  return smallest

O que é sem dúvida, não muito bom. Posso sempre assumir isso heap[0] O topo da pilha é e use isso? Ou isso assumiria muito da implementação subjacente?

Foi útil?

Solução

Sim, você pode fazer essa suposição, porque é declarada no documentação:

Pilhas são matrizes para as quais heap[k] <= heap[2*k+1] e heap[k] <= heap[2*k+2] para todos k, contando elementos de zero. Por uma questão de comparação, elementos inexistentes são considerados infinitos. A propriedade interessante de uma pilha é que heap[0] é sempre o seu menor elemento.

(E essa é provavelmente a razão pela qual não há peek Função: não há necessidade disso.)

Outras dicas

Se você estiver usando o Python 2.4 ou mais recente, também poderá usar heapq.nsmalest ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top