[Likou] 1588. La suma de todos los subarreglos de longitud impar
Dada una matriz de números enteros positivos, calcule la suma de todos los posibles subarreglos de longitud impar. Una submatriz se define como una subsecuencia continua de la matriz original. Devuelva la suma de todos los subarreglos de longitud impar en arr.
Ejemplo 1:
Entrada: arr = [1,4,2,5,3]
Salida: 58
Explicación: Todos los subarreglos de longitud impar y su suma es:
[1] = 1
[4] = 4
[2] = 2
[ 5] = 5
[3] = 3
[1,4,2] = 7
[4,2,5] = 11
[2,5,3] = 10
[1,4,2,5,3] = 15
us Sumando todo los valores dan 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58
Ejemplo 2:
Entrada: arr = [1,2]
Salida: 3
Explicación: Solo hay 2 subarreglos de longitud impar, [1] y [2]. Su suma es 3.
Ejemplo 3:
Entrada: arr = [10,11,12]
Salida: 66
Nombre:
1 <= longitud del arreglo <= 100
1 <= arreglo[i] <= 1000
respuesta
subíndice | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
matriz original | 1 | 4 | 2 | 5 | 3 | |
suma de prefijo | 0 | 1 | 5 | 7 | 12 | 15 |
class Solution {
public int sumOddLengthSubarrays(int[] arr) {
int[] s = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
s[i + 1] = s[i] + arr[i];
}
int sum = 0;
for (int i = 0; i < arr.length; i++) {
for (int length = 1; i + length <= arr.length; length += 2) {
int right = i + length ;
int left = i;
sum += s[right] - s[left];
}
}
return sum;
}
public static void main(String[] args) {
Solution solution = new Solution();
int[] testArry = {
1, 4, 2, 5, 3};
System.out.println(solution.sumOddLengthSubarrays(testArry));
}
}