leetcode: 485. El número máximo de unos consecutivos (44 ms, 32,6 MB)

leetcode: 485. Número máximo de unos consecutivos

El tema es el siguiente:

Dada una matriz binaria, cuente el número máximo de unos consecutivos en ella.

Ejemplo:

Entrada: [1,1,0,1,1,1] Salida: 3 Explicación: Los primeros dos dígitos y los últimos tres dígitos son 1 consecutivo, por lo que el número máximo de 1 consecutivos es 3.

inmediato:

La matriz de entrada solo contiene 0 y 1. La longitud de la matriz de entrada es un número entero positivo y no supera los 10.000.

Análisis : En primer lugar, Likou no necesita tu entrada y salida, y no necesita tus parámetros, todos están preparados para ti, al menos para esta pregunta.

Análisis de preguntas , creo que todos pueden entender la pregunta. Es
calcular el número de 1 en el tiempo en que el número de 1 de salida consecutivos es mayor.

El código es realmente muy simple, porque soy Xiaobai, por lo que solo puedo resolver problemas violentamente .

Explicación del código:
1. Al ingresar 1, el recuento aumentará automáticamente en uno

2. Cuando la entrada no es 1, hay dos casos

  • La primera es actualizar el valor de max cuando el recuento es mayor que el valor de max

  • El segundo es si no es mayor que, entonces el valor máximo no cambiará

  • Después de que termine el primer o segundo tipo de operación, cambie el valor de conteo a 0 y déjelo comenzar de nuevo hasta que ingrese 1 nuevamente.

Pero tenga en cuenta que si la última entrada 1 es la columna con más, el código en este momento no se ejecuta en la operación de conteo de actualizaciones

Por lo tanto, necesitamos realizar operaciones trinoculares en esto cuando regresemos , es decir, si el último recuento es mayor que el máximo, emitimos el recuento; de lo contrario, si el último recuento es menor que el máximo, todavía emitimos el máximo

class Solution {
    
    
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
    
      
 
		int count = 0,max = 0;
		for (int i = 0; i < nums.size(); i++) {
    
    
			if (nums[i] == 1) {
    
    
				count++;
			}
			else {
    
    
                if(count>max){
    
    
                    max = count;
                }
                count = 0;
                }
			
		}
        return (count>max)?count:max;

    }
};

Sin embargo, este código es una pérdida de tiempo y la velocidad de ejecución no es buena. Si hay un código mejor, publíquelo en el área de comentarios y discútanlo juntos. Después de todo, es la primera vez que se escribe un botón de forzar , más o menos bajo

Supongo que te gusta

Origin blog.csdn.net/weixin_42198265/article/details/114504400
Recomendado
Clasificación