Categorías
Algorithms

LeetCode – Autocruzamiento (Java)

Análisis

Este problema puede resolverse fácilmente si se resumen bien los tres casos de autocruzamiento. Aquí están los tres casos de autocruzamiento. No hay otras situaciones de auto cruce basadas en las restricciones de sentido antihorario.

Solución Java

Escribir la solución es sencillo una vez que se identifican los 3 casos de autocruzamiento.

public boolean isSelfCrossing(int[] x) {
    if(x==null || x.length<=3) 
        return false;
 
    for(int i=3; i<x.length; i++){
        if(x[i-3] >= x[i-1] && x[i-2]<=x[i]){
            return true;
        }
 
        if(i>=4 && x[i-4]+x[i]>=x[i-2] && x[i-3]==x[i-1])   {
            return true;
        }
 
        if(i>=5 && x[i-5]<=x[i-3] && x[i]<=x[i-2]&& x[i-1]<=x[i-3] && x[i-4]<=x[i-2] && x[i-1]>=x[i-3]-x[i-5] && x[i]>=x[i-2]-x[i-4]){
            return true;
        }
    }
 
    return false;
}

  LeetCode - Pain Fence (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *