Vérifier si une liste chaînée est un palindrome

Problème Étant donné une liste chaînée simplement chaînée, déterminer si elle constitue un palindrome. Suivi : Peut-on résoudre ce problème en O(n) temps et O(1) espace ? Analyse L'objectif est de vérifier si une liste chaînée est symétrique (palindrome). Solution 1 : Approche avec tableau auxiliaire Une première idée consiste à parcourir la li ...

Publié le 22 juin à 22h47

Récursivité en C : Implémentations pratiques

Calcul de la factorielle avec récursion Exemple de programme qui calcule la factorielle d'un nombre entier via une fonction récursive. #include <stdio.h> int calculer_factorielle(int valeur); int main() { int entree; printf("Entrez un entier positif : "); scanf("%d", &entree); if (entree < 0) { ...

Publié le 22 juin à 20h50

Détection d'équivalence de formes 2D sur grille par transformations géométriques

L'objectif de ce problème est de déterminer si deux configurations de formes bidimensionnelles, définies sur une grille, sont équivalentes. L'équivalence est définie par la possibilité d'établir une correspondance biunivoque entre les composantes connexes (souvent appelées "pièces" ou "clusters") de chaque configuration. Cha ...

Publié le 22 juin à 16h41

Solutions des problèmes A à D de la sélection 2022 du NCLG

A. Jeu de combinaison Problème original : CF1221A Énoncé : Xiao Hua adore jouer à 2048 et partage maintenant une version 2048pro avec vous. Pouvez-vous réussir à atteindre 2048 ? Initialement, vous avez un ensemble S de n entiers. Chaque entier de cet ensemble est une puissance de 2 (1, 2, 4, 8, 16, 32, ...). Vous pouvez effectuer un nombre arb ...

Publié le 21 juin à 01h52

Notes de résolution de problèmes LeetCode (débutant)

Manipulations courantes Chaînes de caractères # Conversion ASCII ord('A') # 65 chr(65) # 'A' # Nettoyage s = " hello\t\n" s.strip() # "hello" s.lstrip() # "hello\t\n" s.rstrip() # " hello" # Tests et transformations "abc".isalpha() # True "123".isnu ...

Publié le 21 juin à 00h34

Bilan de la 87ème Compétition Bi-Hebdomadaire : Analyse et Solutions

L'auteur présente son bilan de la 87ème compétition bi-hebdomadaire, ayant réussi à résoudre trois des quatre problèmes proposés. 6184. Calculer le Nombre de Jours Passés Ensemble Le premier problème consistait à dénombrer les jours communs où deux personnes étaient disponibles, étant donné leurs périodes de présence respectives. L'auteur a ren ...

Publié le 20 juin à 17h34

Trouver le Troisième Nombre Maximum dans un Tableau

Le problème consiste à identifier le troisième nombre distinct le plus grand au sein d'un tableau d'entiers non vide. Si un tel nombre n'existe pas (c'est-à-dire s'il y a moins de trois nombres distincts dans le tableau), la fonction doit alors retourner le nombre le plus grand du tableau. Exemples Exemple 1 : Entrée : [3, 2, 1] Sortie : 1 Exp ...

Publié le 18 juin à 20h42

Algorithmes sur les Arbres Binaires : Transformations et Parcours

1. Transformation d'un arbre binaire en liste chaînée L'objectif est d'aplatir un arbre binaire pour qu'il ressemble à une liste chaînée simple, en utilisant la même structure TreeNode. La liste doit suivre l'ordre d'un parcours en pré-ordre (racine, gauche, droite), avec tous les nœuds gauches mis à null. /** * Definition for a binary tree no ...

Publié le 18 juin à 18h47

Algorithmes LCA : Entraînement avec des problèmes introductifs

L'algorithme du plus ancêtre commun (LCA) est une technique fondamentale pour résoudre des problèmes de distance ou de relations dans des arbres. Cet article présente plusieurs problèmes d'entraînement pour maîtriser le LCA, avec des explications et des implémentations en C++. Problème 1 : Distance entre maisons Lien : HDU 2586 Description : Un ...

Publié le 17 juin à 17h54

Intersection de deux tableaux avec comptage des occurrences

Étant donné deux tableaux d'entiers, écrire une fonction pour calculer leur intersection. Chaque élément dans le résultat doit apparaître un nombre de fois égal au minimum de son occurrence dans les deux tableaux d'origine. L'ordre des éléments dans le résultat n'est pas important. Exemple 1 : Entrée : liste1 = [1,2,2,1], liste2 = [2,2] Sortie ...

Publié le 17 juin à 03h20