Categorías
Algorithms

LeetCode – Subsecuencia de Wiggle (Java)

Dada una secuencia de enteros, devuelve la longitud de la subsecuencia más larga que es una secuencia de meneo. Una subsecuencia se obtiene eliminando algunos elementos (eventualmente, también cero) de la secuencia original, dejando los elementos restantes en su orden original.

Solución Java

El problema se convierte en encontrar el punto de inflexión. Cuando nums[i] números[i+1], queremos seguir hacia la derecha hasta encontrar el más pequeño, que es el punto de inflexión. Siempre queremos utilizar el más grande o el más pequeño como punto de inflexión porque eso garantiza la solución óptima.

public int wiggleMaxLength(int[] nums) {
    if(nums == null || nums.length==0)
        return 0;
    if(nums.length<2){
        return nums.length;
    }    
 
    int count=1;
 
 
    for(int i=1, j=0; i<nums.length; j=i, i++){
        if(nums[j]<nums[i]){
            count++;
            while(i<nums.length-1 && nums[i]<=nums[i+1]){
                i++;
            }
        }else if(nums[j]>nums[i]){
            count++;
            while(i<nums.length-1 && nums[i]>=nums[i+1]){
                i++;
            }
        }
    }
 
    return count;
}

  LeetCode - Número único II (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 *