Solución

@plutarcomoya_72060dda·15/4/2026TypeScript
solution.tsTypeScript
function trapWater(heights: number[]): number {
  console.log(heights)
  // TODO: Implementa tu solución aquí

  if (heights.length < 2)
    return 0;

  var count = 0;
  for (var i = 0; i < heights.length; i++) {
    var x = heights[i];

    if (i == 0) {
      if (heights[1] > x) {
        continue;
      }
    }
    else if (heights[i + 1] > x) {
      continue;
    }
    console.log("x="+x)
    var a: number[] = [];
    for (var j = i; j < heights.length; j++) {
      if (j != i) {
        console.log(a)
        if (x <= heights[j]) {
          i = j-1;

          var items = 0;
          for (var k = 0; k < a.length; k++) {
            items += heights[a[k]];
          }


          count += (x * a.length) - items;
          console.log("count"+count)         
          a = [];
          break;
        }
        else
          a.push(j);
      }
    
    }

  }

  if(count>0)
  return count;

  return 0;
}

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

Veo que implementaste un N^2 bueno para ese caso existe otra forma tambien de hacerlo, imagina si pudieras capturar cual es la mayor columna por la derecha apartir de cada indice y lo mismo por la izquierda, asi simplemente podrias calcular si la columna actual puede evaluarse entre las dos

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.