LeetCode-724. Buscar código y análisis de índices dinámicos (Java)

LeetCode-724. Encuentre el índice central de la matriz [Find Pivot Index] -análisis y código [Java]

1. Tema

Dado que tiene números de matriz enteros, escriba un método que devuelva el "índice central" de la matriz.
El índice central de la matriz es un índice de la matriz y la suma de todos los elementos de la izquierda es igual a la suma de todos los elementos de la derecha.
Si no hay un índice central en la matriz, se devuelve -1. Si la matriz tiene varios índices centrales, se debe devolver el más cercano a la izquierda.
Nota: El índice central puede aparecer en ambos extremos de la matriz.

Ejemplo 1:

输入:nums = [1, 7, 3, 6, 5, 6]
输出:3
解释:
索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相等。
同时, 3 也是第一个符合要求的中心索引。

Ejemplo 2:

输入:nums = [1, 2, 3]
输出:-1
解释:
数组中不存在满足此条件的中心索引。

Ejemplo 3:

输入:nums = [2, 1, -1]
输出:0
解释:
索引 0 左侧不存在元素,视作和为 0 ;右侧数之和为 1 + (-1) = 0 ,二者相等。

Ejemplo 4:

输入:nums = [0, 0, 0, 0, 1]
输出:4
解释:
索引 4 左侧数之和为 0 ;右侧不存在元素,视作和为 0 ,二者相等。

inmediato:

  • El rango de longitud de nums es [0, 10000].
  • Cualquier número [i] será un número entero en el rango [-1000, 1000].

Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/find-pivot-index Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos, análisis y código

1. Acumulación directa

(1) Pensando

Diseñe dos enteros para registrar la suma de los elementos izquierdo y derecho del índice actual respectivamente, hasta que se encuentre el índice central o se complete el recorrido.

(2) Código

class Solution {
    
    
    public int pivotIndex(int[] nums) {
    
    
        if (nums.length == 0)
            return -1;
        int left = 0, right = 0;//左、右侧元素累加值
        for (int i = 1; i < nums.length; i++)//计算右侧元素累加值
            right += nums[i];
        for (int i = 0; i < nums.length - 1; i++) {
    
    
            if (left == right)
                return i;
            left += nums[i];
            right -= nums[i + 1];
        }
        if (left == right)//确定最后一个索引是否符合
            return nums.length - 1;
        return -1;
    }
}

(3) Resultados

Tiempo de ejecución: 1 ms, superando al 100,00% de los usuarios
en todas las presentaciones de Java ; consumo de memoria: 39,2 MB, superando al 49,72% de los usuarios en todas las presentaciones de Java.

Tres, otro

Nada.

Supongo que te gusta

Origin blog.csdn.net/zml66666/article/details/113785751
Recomendado
Clasificación