findMaxAverage-Promedio máximo de la submatriz I

Requisitos de la asignatura

Dados n números enteros, encuentre el subarreglo continuo con el mayor promedio y longitud k, y obtenga el mayor promedio.

Ejemplo:

Entrada: [1,12, -5, -6,50,3], k = 4
Salida: 12,75
Explicación: Promedio máximo (12-5-6 + 50) / 4 = 51/4 = 12,75

inmediato:

1 <= k <= n <= 30 000.
El rango de datos proporcionado [-10,000, 10,000].

Ideas para resolver problemas

Esta pregunta es
una pregunta simple 1. Registre el valor máximo de una variable maxsun, que se usa para almacenar el valor máximo en todas las ventanas (se actualizará a medida que se mueva la ventana)
2. Registre una variable sumIn para registrar la suma de ventana actual
3. Si la suma del paso 2 es mayor que el valor del paso 1, actualice 1
4. Utilice maxsum / k para obtener el resultado

Demostración de código

class Solution {
    
    
    public double findMaxAverage(int[] nums, int k) {
    
    
        //存放最大的数据
       int maxsum=0;
        for (int i = 0; i < k; i++) {
    
    
            maxsum+=nums[i];
        }
        int sumIn=maxsum;
        for(int j=k;j<nums.length;j++)
        {
    
    
            sumIn=sumIn-nums[j-k]+nums[j];
            maxsum=sumIn>maxsum ?sumIn:maxsum;
        }
        double res;
        res=maxsum*1.0/k;
        return res;

    }
}

Efecto de demostración

La
respuesta de información fue exitosa:
tiempo de ejecución: 2 ms, derrotando al 100,00% de los usuarios de Java
Consumo de memoria: 42,7 MB, derrotando al 54,41% de los usuarios de Java

Supongo que te gusta

Origin blog.csdn.net/tangshuai96/article/details/113626581
Recomendado
Clasificación