Complexidade de espaço e o que conta como 'in-place'
Pergunta
Qual a diferença entre complexidade de tempo e de espaço, e o que significa um algoritmo ser 'in-place'?
Resposta esperada
Complexidade de espaço mede a memória extra que o algoritmo aloca além da entrada, em função do tamanho da entrada. 'In-place' significa O(1) de espaço extra — o algoritmo rearranja os dados no próprio array de entrada, sem criar uma estrutura proporcional a n. Exemplos: inverter um array trocando elementos das pontas é in-place; criar um novo array invertido é O(n) de espaço. Cuidado: recursão que parece não alocar nada ainda usa O(profundidade) de espaço na call stack — quicksort 'in-place' é O(log n) de espaço por causa da pilha, não O(1).
Por que perguntam isso
A pegadinha é a call stack: muita gente diz 'O(1) de espaço' num quicksort recursivo esquecendo a profundidade da recursão. Boa pergunta pra calibrar rigor.