Título
Dado un número de matriz de tipo entero, escriba un método que devuelva el "índice central" de la matriz.
Definimos el índice central de la matriz así: la suma de todos los elementos a la izquierda del índice central de la matriz es igual a la suma de todos los elementos a la derecha.
Si la matriz no tiene un índice central, deberíamos devolver -1. Si la matriz tiene múltiples índices centrales, entonces deberíamos devolver el más cercano a la izquierda.
Ejemplo 1:
Entrada:
nums = [1, 7, 3, 6, 5, 6]
Salida: 3
Explicación:
La suma (1 + 7 + 3 = 11) del lado izquierdo del índice 3 (nums [3] = 6), y el derecho La suma de los números laterales (5 + 6 = 11) es igual.
Al mismo tiempo, 3 es también el primer índice central que cumple con los requisitos.
Ejemplo 2:
Entrada:
nums = [1, 2, 3]
Salida: -1
Explicación:
No hay un índice central que satisfaga esta condición en la matriz.
Descripción:
El rango de longitud de nums es [0, 10000].
Cualquier número [i] será un número entero en el rango [-1000, 1000].
Ideas para resolver problemas
1. Encuentre la suma de toda la matriz
2. Siempre que la suma se acumule en orden, la suma acumulada * 2 es el resultado del paso 1: reste el elemento actual de la matriz
. 3. No cumple con el paso 2 y devuelve - 1 si se excede la longitud de la matriz;
Código de resolución de problemas:
class Solution {
public int pivotIndex(int[] nums) {
if(nums.length==0)
return -1;
//首先计算数组全部的值
int sum=0;
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}
int asum=0;
for (int i = 0; i < nums.length; i++) {
if(asum*2==sum-nums[i])
return i;
/*if(asum*2>sum-nums[i])
return -1;*/
asum+=nums[i];
}
return -1;
}
}
efecto
info
解答成功:
执行耗时:2 ms,击败了55.66% 的Java用户
内存消耗:39.3 MB,击败了27.92% 的Java用户