Menu
CoddyTech

Container With Most Water

Você recebe uma lista height de números inteiros não negativos. A linha i é uma parede vertical de altura height[i] na posição i. Quaisquer duas linhas formam um recipiente com o chão, que comporta uma quantidade de água igual à altura da linha mais baixa multiplicada pela distância entre as duas linhas. As outras linhas não atrapalham. Retorne a maior quantidade de água que um único par de linhas pode comportar.

Função

maxArea(height: integer-array) → integer
heightinteger-array
as alturas das linhas nas posições 0, 1, 2 e assim por diante
Retornainteger
a maior quantidade de água que duas linhas podem conter

Restrições

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • A resposta é no máximo 108, então cabe em um inteiro de 32 bits.

Exemplos

Entrada
height = [3, 7, 2, 5, 4, 7, 3, 6]
Saída
36
Explicação
As linhas nas posições 1 e 7, com alturas 7 e 6, estão separadas por 6 e comportam 6 × 6 = 36. As duas linhas mais altas, os 7 nas posições 1 e 5, comportam apenas 7 × 4 = 28.
challenge icon

Para ir além

Aqui, as linhas entre as duas são ignoradas. Se cada linha fosse uma barra sólida, quanta água se acumularia entre todas elas? Você também consegue calcular isso em O(n)?

Redefinir código
def maxArea(height):
    # Escreva o código aqui

Teste #1

Teste #2

Argumento

height = [3, 7, 2, 5, 4, 7, 3, 6]

Saída Esperada

36