Algorithmes de listes chaînées : suppression, conception et inversion
Les listes chaînées sont une structure de données fondamentale en informatique. Cet article examine trois techniques clés : la suppression d'éléments, la conception complète d'une liste et l'inversion d'une liste chaînée.
Suppression d'éléments dans une liste chaînée
Le but est de retirer tous les nœuds dont la valeur correspond à un paramèt ...
Publié le 30 juin à 17h00
Compter les nombres premiers avec le Crible d'Ératosthène
Description: Compter le nombre de nombres premiers inférieurs à un nombre non négatif n.
Pour résoudre ce problème, nous utiliserons l'algorithme du Crible d'Ératosthène. Le principe est de marquer les nombres non-premiers en commençant par le premier nombre premier (2) et en élimniant tous ses multiples, puis en passsant au nombre premier suiv ...
Publié le 26 juin à 20h24
Solution du problème Leetcode 55 : Jeu du Saut
Le problème 55 de Leetcode, appelé Jeu du Saut, consiste à vérifier si on peut atteindre le dernier index d'un tableau en partant du premier, où chaque élément indique la distance maximale de saut autorisée.
Plusieurs méthodes algorithmiques s'appliquent, incluant le backtracking, la programmation dynamique et l'approche greedy. Le backtracking ...
Publié le 24 juin à 20h40
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
Trouver le Nœud d'Entrée d'un Cycle dans une Liste Chaînée avec Table de Hachage et Pointeurs Rapide-Lent
Description du Problème
Étant donné le nœud de tête d'une liste chaînée, déterminer le premier nœud qui introduit un cycle. Si aucun cycle n'existe, retourrner null.
Méthode 1 : Table de Hachage
Principe
Parcourir la liste chaînée en enregistrant chaque nœud dans une table de hachage. Lorsqu'un nœud déjà présent est rencontré, il s'agit du poin ...
Publié le 19 juin à 23h37
Calcul de la médiane de deux tableaux triés
Étant donné deux tableaux triés arrA et arrB de tailles respectives lenA et lenB, l'objectif est de déterminer leur médiane avec une complexité temporelle de O(log(lenA + lenB)). On suppose que les tableaux ne sont pas simultanément vides.
Exemple :
Entrée : arrA = [1, 3], arrB = [2]
Sortie : La médiane est 2.0
Approches algorithmiques
1. Fusio ...
Publié le 17 juin à 04h07
Rotation d'image 90 degrés dans une matrice carrée
Problème
Soit une matrice carrée matrix de dimensions n × n représentant une image. Vous devez la faire pivoter de 90 degrés dans le sens horaire, sur place (c'est-à-dire sans utiliser une autre matrice).
Approches
L'idée fondamentale est que l'élément situé à la ligne i et colonne j se retrouve après rotation à la position j de l'avant-dernièr ...
Publié le 13 juin à 22h30
Résolution de problèmes LeetCode sur les arbres binaires : équilibre, chemins et somme des feuilles gauches
Nous abordons trois problèmes LeetCode classiques impliquant des arbres binaires, en utilisant des techniques de parcousr en C++. Ces problèmes couvrent la vérification d'équilibre, la génération de tous les chemins et le calcul de la somme des feuilles gauches.
Problème 110 : Arbre binaire équilibré
Pour déterminer si un arbre binaire est équi ...
Publié le 11 juin à 20h14
Chaînes isomorphes : solution et implémentations en C++
Problème : chaînes isomorphes
Étant données deux chaînes s et t, déterminer si elles sont isomorphes.
Deux chaînes sont dites isomorphes si on peut remplacer chaque caractère de s par un autre pour obtenir t. Toutes les occurrences d’un même caractère doivent être remplacées par le même caractère, tout en conservant l’ordre. Aucun caractère ne ...
Publié le 10 juin à 22h31
Multiplication de grands nombres sous forme de chaînes
Le problème consiste à multiplier deux nombres représentés par des chaînes de caractères et à retourner le résultat sous forme de chaîne. Les nombres peuvent être arbitrairement grands et sont non négatifs.
Une première idée serait de convertir chaque chaîne en entier, d'effectuer la multiplication, puis de reconvertir le résultat en chaîne. Ce ...
Publié le 9 juin à 03h48