Solución

@alexword·18/4/2026TypeScript
solution.tsTypeScript
function trapWater(heights: number[]): number {
  let l_index = 0
  let r_index = heights.length-1
  let max_l   = 0
  let max_r   = 0
  let acc     = 0
  while(l_index<r_index){
    max_l = Math.max(max_l,heights[l_index])
    max_r = Math.max(max_r,heights[r_index])
    if(heights[l_index]>=heights[r_index]){
      r_index-=1
      if(max_r>heights[r_index] && max_l>heights[r_index]){
        acc+=Math.min(max_l,max_r)-heights[r_index]
      }
    }else if(heights[l_index]<heights[r_index]){
      l_index+=1
      if(max_r>heights[l_index] && max_l>heights[l_index]){
        acc+=Math.min(max_l,max_r)-heights[l_index]
      }
    }
  }
  return acc
}

// No modificar: necesario para evaluar el resultado.
export { trapWater };
1respuestas
Respuestas
@alexwordAutor18/4/2026

No voy a mentir me costo muchisimo, tuve una charla con la ia pero sin pedirle la respuesta solo consejos porque realmente no lograba ver la solucion sin un array auxiliar, luego de que me mencionara sobre usar dos punteros (al inicio y al final) que pensara en moverme en funcion de cual era mayor, aun asi quede choqueado pensando jajaj, pero luego de hacer un dibujo en excalidraw es que pude verlo jajajajja

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.