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