"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Número de formas de dividir la matriz

Número de formas de dividir la matriz

Publicado el 2025-03-25
Navegar:961

Number of Ways to Split Array

2270. Número de formas de dividir la matriz

dificultad: mediano

temas: array, prefijo sum

se le dio un 0-indexed entero matriz nums de longitud n.

nums contiene una división válida [&] válida en el índice I Si las siguientes son verdaderas:

    la suma de los primeros elementos i 1 es
  • mayor o igual a la suma de los últimos elementos n - i - 1.
  • hay
  • al menos un elemento al derecho de i. Es decir, 0
return

el número de válidos divisores en nums .

Ejemplo 1:

  • Entrada: nums = [10,4, -8,7]
  • output: 2
  • explicación: Hay tres formas de dividir los números en dos partes no vacías:
      dividido nums en el índice 0. Luego, la primera parte es [10], y su suma es 10. La segunda parte es [4, -8,7], y su suma es 3. Dado que 10> = 3, i = 0 es una división válida.
    • dividido nums en el índice 1. Entonces, la primera parte es [10,4], y su suma es 14. La segunda parte es [-8,7], y su suma es -1. Dado que 14> = -1, i = 1 es una división válida.
    • dividido en el índice 2. Entonces, la primera parte es [10,4, -8], y su suma es 6. La segunda parte es [7], y su suma es 7. Dado que 6
  • Por lo tanto, el número de divisiones válidas en nums es 2.

Ejemplo 2:

  • Entrada: nums = [2,3,1,0]
  • output: 2
  • explicación: Hay dos divisiones válidas en números:
      divididos en el índice 1. Entonces, la primera parte es [2,3], y su suma es 5. La segunda parte es [1,0], y su suma es 1. Dado que 5> = 1, i = 1 es una división válida.
    • dividido nums en el índice 2. Entonces, la primera parte es [2,3,1], y su suma es 6. La segunda parte es [0], y su suma es 0. Dado que 6> = 0, i = 2 es una división válida.

restricciones:

    2 5 -10
  • 5 5

Pista:

    para cualquier índice i, ¿cómo podemos encontrar la suma de los primeros (i 1) elementos de la suma de los primeros elementos i?
  1. Si se conoce la suma total de la matriz, ¿cómo podemos verificar si la suma de los primeros (i 1) elementos mayores o iguales a los elementos restantes?

Solución:

podemos abordarlo usando los siguientes pasos:

Acercarse:

  1. prefijo suma : primero, calculamos la suma acumulativa de la matriz desde la izquierda, lo que ayuda a verificar la suma de los primeros elementos i 1.
  2. suma total : calcule la suma total de la matriz, que es útil para verificar si la suma de los elementos restantes es menor o igual a la suma de los primeros elementos i 1.
  3. iterar sobre la matriz : para cada índice válido i (donde 0
  4. eficiencia : en lugar de recalcular las sumas repetidamente, use la suma de prefijo y la suma total para comparaciones eficientes.
Implementemos esta solución en php:

2270. Número de formas de dividir la matriz

Php /** * @param integer [] $ nums * @return entero */ function waystoSplitArray ($ nums) { ... ... ... /** * ir a ./solution.php */ } // Uso de ejemplo: $ nums1 = [10, 4, -8, 7]; echo waystosplitArray ($ nums1); // Salida: 2 $ nums2 = [2, 3, 1, 0]; echo waystosplitArray ($ nums2); // Salida: 2 ?>

Explicación:

  1. $ totalsum : esta variable almacena la suma de todos los elementos en la matriz nums.
  2. $ prefixsum : esta variable realiza un seguimiento de la suma acumulativa de elementos desde la izquierda (hasta el índice i).
  3. $ RETIRSEM : Esta es la suma de los elementos restantes del índice I 1 hasta el final de la matriz. Se calcula restando $ prefixsum de $ Totalsum.
  4. check dividido válido : para cada índice i, verificamos si la suma de prefijo es mayor o igual a la suma restante.
Complejidad del tiempo:

  • o (n) : recorremos la matriz una vez para calcular la suma y una vez más para verificar las divisiones válidas. Por lo tanto, la complejidad del tiempo es lineal con respecto a la longitud de la matriz.
Complejidad espacial:

  • o (1) : estamos usando solo unas pocas variables adicionales ($ Totalsum, $ prefixsum, $ RTIVESUM), por lo que la complejidad del espacio es constante.

Enlaces de contacto

Si encontró esta serie útil, considere dar el repositorio

una estrella en GitHub o compartir la publicación en sus redes sociales favoritas. ¡Tu apoyo significaría mucho para mí!

Si desea un contenido más útil como este, no dude en seguirme:

  • linkedin
  • github
Declaración de liberación Este artículo se reproduce en: https://dev.to/mdarifulhaque/2270-number-of-ways-to-split-array-4d5p?
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3