Menu
CoddyTech

Container With Most Water

Você recebe uma lista height de inteiros não negativos. A linha i é uma parede vertical de altura height[i], posicionada em 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 conter.

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 têm alturas 7 e 6 e estão separadas por 6, então comportam 6 × 6 = 36. As duas linhas mais altas, os 7 nas posições 1 e 5, comportam apenas 7 × 4 = 28, e o par externo comporta 3 × 7 = 21.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Aqui, as linhas entre as duas que você escolher 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
Casos de teste

Caso 1

Caso 2

Entrada

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

Esperado

36