[] 300. Mayor aumento de Subsequence LeetCode eleve secuencia más larga (Medium) (JAVA)

[] 300. Mayor aumento de Subsequence LeetCode eleve secuencia más larga (Medium) (JAVA)

Tema Dirección: https://leetcode.com/problems/longest-increasing-subsequence/

Descripción Asunto:

Dado un vector de enteros sin ordenar, encontrar la longitud de la más larga subsecuencia creciente.

Ejemplo:

Input: [10,9,2,5,3,7,101,18]
Output: 4 
Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4. 

Nota:

1. There may be more than one LIS combination, it is only necessary for you to return the length.
2. Your algorithm should run in O(n2) complexity.

Seguimiento: ¿Podría mejorarlo a O (n log n) complejidad del tiempo?

Sujeto al efecto

Un trastorno de una matriz de enteros dada, la longitud de la secuencia más larga creciente encontrado.

Enfoque de resolución de problemas

1, para mantener una lista de la cola ordenada
2, en sustitución de las posiciones correspondientes en la cola ordenada con un nuevo elemento, si el elemento es más grande que la anterior, se añade a la cola ordenada

class Solution {
    public int lengthOfLIS(int[] nums) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            insert(list, nums[i]);
        }
        return list.size();
    }

    public void insert(List<Integer> list, int num) {
        if (list.size() == 0 || list.get(list.size() - 1) < num) {
            list.add(num);
            return;
        }
        int start = 0;
        int end = list.size() - 1;
        while (start <= end) {
            int mid = start + (end - start) / 2;
            if (list.get(mid) == num) {
                start = mid;
                break;
            } else if (list.get(mid) > num) {
                end = mid - 1;
            } else {
                start = mid + 1;
            }
        }
        list.set(start, num);
    }
}

Cuando la ejecución: 1 ms, venció el 94,83% de todos los usuarios a presentar en Java
consumo de memoria: 37,7 MB, batir el 5,05% de todos los usuarios a presentar en Java

Publicado 81 artículos originales · ganado elogios 6 · vistas 2280

Supongo que te gusta

Origin blog.csdn.net/qq_16927853/article/details/104859926
Recomendado
Clasificación