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