[Avance en el tema del algoritmo] Submatriz de ventana deslizante con longitud mínima (9)

Tabla de contenido

1. Análisis de preguntas

2. Principio del algoritmo

3. Escritura de código

Escribe al final:


1. Análisis de preguntas

Enlace de pregunta: 209. Subarreglo de longitud mínima - Leetcode

 Cabe señalar que la pregunta da números enteros positivos.

El requisito de la pregunta no es difícil de entender: encontrar el subconjunto más corto.

2. Principio del algoritmo

Si se utiliza fuerza bruta, es un algoritmo O(N3) de alta complejidad.

Podemos hacerlo con una ventana deslizante. La ventana deslizante es un nombre vívido, pero en realidad es un algoritmo de doble puntero.

Cuando los dos punteros dobles se mueven en la misma dirección sin retroceder, lo llamamos ventana deslizante porque se desliza como una ventana.

Entonces, ¿cómo utilizamos ventanas correderas para resolver este problema?

1. Utilice dos punteros como límites izquierdo y derecho de la ventana.

2. Ingrese a la ventana

3. Determinar cómo salir de la ventana.

En términos de esta pregunta:

Los dos punteros izquierdo y derecho se inicializan primero a 0,

Si la suma es menor que el valor objetivo, vamos a la derecha ++,

Si la suma es mayor o igual que el valor objetivo, registre el resultado y luego deje que se vaya ++. 

3. Escritura de código

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int n = nums.size(), sum = 0, len = INT_MAX;
        int left = 0, right = 0;
        while(right < n) {
            sum += nums[right];
            while(sum >= target) {
                len = min(len, right - left + 1);
                sum -= nums[left++];
            }
            right++;
        }
        return len == INT_MAX ? 0 : len;
    }
};

Escribe al final:

Ese es el contenido de este artículo, gracias por leer.

Si crees que has ganado algo, puedes darle un me gusta al blogger .

Si hay omisiones o errores en el contenido del artículo, envíe un mensaje privado al blogger o indíquelo en el área de comentarios ~

Supongo que te gusta

Origin blog.csdn.net/Locky136/article/details/131655722
Recomendado
Clasificación