Aller au contenu

Algorithme de Kadane

Sous-tableau de somme maximale en O(n)

Exercice Intermédiaire · Algorithmique · prepa scientifique et economique (CPGE)

Enonce

Écrire sous_tableau_somme_max(T) qui renvoie la plus grande somme d'un sous-tableau contigu non vide de T.

Exemple : pour [-2, 1, -3, 4, -1, 2, 1, -5, 4] la réponse est 6 (sous-tableau [4, -1, 2, 1]).

⚠ Contrainte : complexité $O(n)$ temps, $O(1)$ espace. Tu peux supposer T non vide.

Signature attendue

def sous_tableau_somme_max(T: list) -> int:

Exemples

  • sous_tableau_somme_max([-2, 1, -3, 4, -1, 2, 1, -5, 4]) → 6
  • sous_tableau_somme_max([1, 2, 3, 4, 5]) → 15
  • sous_tableau_somme_max([-1, -2, -3, -4]) → -1 (tous negatifs)

📖 Rappel de cours

Étant donné un tableau d'entiers (éventuellement négatifs), on cherche la somme maximale d'un sous-tableau contigu non vide. La version naïve teste tous les couples $(i,j)$ en $O(n^2)$ ou $O(n^3)$ ; Kadane descend à $O(n)$ grâce à un invariant malin.

Idée clé :

On maintient somme_courante = somme maximale d'un sous-tableau qui se termine à l'indice $i$.

À l'étape $i+1$, deux choix :

  • étendre le sous-tableau courant : somme_courante + T[i+1]
  • recommencer à T[i+1] seul

On prend le max des deux. En parallèle, somme_max garde la meilleure somme jamais vue.

Complexité $O(n)$ temps, $O(1)$ espace. Bijou classique de programmation dynamique « en ligne ».

← Exercices d'algorithmique en Python — tris, dichotomie, récursivité

Exercices du meme theme

  • Arbres Binaires — Parcours et Hauteur
  • Arbre Binaire de Recherche (ABR)
  • Tri par Tas (Heap Sort)
  • Chemins dans une Grille
  • Distance d'Édition (Levenshtein)
  • Rendu de Monnaie (DP)

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite