Maison >développement back-end >tutoriel php >Somme de plage des sommes de sous-tableaux triés
1508. Somme de plage des sommes de sous-tableaux triés
Moyen
Vous recevez le tableau numérique composé de n entiers positifs. Vous avez calculé la somme de tous les sous-tableaux continus non vides du tableau, puis les avez triés dans un ordre non décroissant, créant un nouveau tableau de n * (n + 1) / 2 nombres.
Renvoyer la somme des nombres de l'index gauche à l'index droit (indexé à partir de 1), inclus, dans le nouveau tableau. Puisque la réponse peut être un nombre énorme, renvoyez-la modulo 109 + 7.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Pour résoudre ce problème, nous pouvons suivre ces étapes :
Implémentons cette solution en PHP : 1508. Somme de plage des sommes de sous-tableaux triés
Explication:
Génération de sommes de sous-tableaux :
- Parcourez chaque index de départ i du sous-tableau.
- Pour chaque index de départ i, calculez la somme des sous-tableaux se terminant à l'index j (où j >= i).
- Ajoutez chaque somme de sous-tableau calculée au tableau $sums.
Tri des sommes :
- Utilisez la fonction sort() de PHP pour trier le tableau $sums dans un ordre non décroissant.
Résumation de la plage requise :
- Itérer de l'index gauche-1 à l'index droite-1 (puisque le problème utilise l'indexation basée sur 1).
- Accumulez la somme des éléments de cette plage en prenant soin d'utiliser modulo 109 + 7 pour éviter les débordements.
Cette solution génère efficacement toutes les sommes des sous-tableaux, les trie et calcule la somme de plage requise comme spécifié.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!