46. La subsecuencia continua más larga de la matriz

46. ​​La subsecuencia continua más larga de la matriz

Descripción del Título

Dado un arreglo de matriz desordenado, devuelve la longitud de la secuencia continua más larga (se requieren valores continuos y las posiciones pueden ser discontinuas, por ejemplo, 3, 4, 5 y 6 son números naturales continuos)

ingresar

[100,4,200,1,3,2]

valor de retorno

4

ingresar

[1,1,1]

valor de retorno

1

análisis

1. Se puede obtener del significado de la pregunta, y los elementos repetidos no se cuentan, por lo que adoptamos el método Set para eliminar automáticamente los duplicados

2. Luego continúe comparando, si el conjunto contiene elementos después del elemento actual + 1, dé el contador ++;

3. Hasta que se atraviese el conjunto completo, de modo que se pueda obtener la subsecuencia continua más larga

Código

   import java.util.*;
    
    
    public class Solution {
    
    
        /**
         * max increasing subsequence
         * @param arr int整型一维数组 the array
         * @return int整型
         */
       public int MLS(int[] arr) {
    
    
    		if (arr.length == 0) {
    
    
    			return 0;
    		}
    		int n = arr.length;
    		int max = 1;
    		Set<Integer> set = new HashSet<>();
    		for (int num : arr) {
    
    
    			set.add(num);
    		}
    		for (int num : arr) {
    
    
    			if (set.contains(num - 1)) {
    
    
    				continue;
    			}
    			int start = num;
    			while (set.contains(start + 1)) {
    
    
    				start++;
    			}
    			max = Math.max(max, start - num + 1);
    		}
    		return max;
    	}
    }


Supongo que te gusta

Origin blog.csdn.net/qq_45874107/article/details/115285696
Recomendado
Clasificación