2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Étant donné le nœud principal d'une liste chaînée et une valeur entière, veuillez supprimer tous les nœuds de la liste chaînée qui satisfont Node.val == val et renvoyer le nouveau nœud principal.
Exemple 1:
Entrée : tête = [1,2,6,3,4,5,6], val = 6
Sortie : [1,2,3,4,5]
Exemple 2 :
Entrée : head = [], val = 1
Sortir: []
Exemple 3 :
Entrée : head = [7,7,7,7], val = 7
Sortir: []
indice:
Le nombre de nœuds dans la liste est compris entre [0, 104]
1 <= Node.val <= 50
0 <= val <= 50
Voici le code qui utilise Java pour résoudre le problème de la suppression d'éléments d'une liste chaînée :
- class ListNode {
- int val;
- ListNode next;
-
- ListNode(int val) {
- this.val = val;
- }
- }
-
- public class RemoveLinkedListElements {
- public ListNode removeElements(ListNode head, int val) {
- // 创建一个虚拟头节点,方便处理头节点可能被删除的情况
- ListNode dummy = new ListNode(0);
- dummy.next = head;
-
- ListNode curr = dummy;
- while (curr.next!= null) {
- if (curr.next.val == val) {
- curr.next = curr.next.next;
- } else {
- curr = curr.next;
- }
- }
-
- return dummy.next;
- }
-
- public static void main(String[] args) {
- // 构建链表
- ListNode head = new ListNode(1);
- ListNode node2 = new ListNode(2);
- ListNode node3 = new ListNode(6);
- ListNode node4 = new ListNode(3);
- ListNode node5 = new ListNode(4);
- ListNode node6 = new ListNode(5);
- ListNode node7 = new ListNode(6);
- head.next = node2;
- node2.next = node3;
- node3.next = node4;
- node4.next = node5;
- node5.next = node6;
- node6.next = node7;
-
- RemoveLinkedListElements solution = new RemoveLinkedListElements();
- ListNode newHead = solution.removeElements(head, 6);
-
- // 打印移除指定值后的链表
- while (newHead!= null) {
- System.out.print(newHead.val + " ");
- newHead = newHead.next;
- }
- }
- }
L'idée de ce code est : créer un nœud principal virtuel'factice ', pointez son pointeur 'next' vers le nœud principal 'head' de la liste chaînée d'origine. Ensuite, parcourez la liste chaînée à travers une boucle, et lorsqu'un nœud avec une valeur égale à « val » est rencontré, il est supprimé de la liste chaînée. Enfin, renvoyez le nœud « suivant » de « factice », qui est le nœud principal de la nouvelle liste chaînée après avoir supprimé le nœud de valeur spécifié.
(L'article est un résumé et une référence de certaines expériences personnelles de l'auteur dans le processus d'apprentissage de Java. S'il y a des endroits inappropriés ou erronés, veuillez les critiquer et les corriger. Nous travaillerons dur pour les corriger. S'il y a une infraction , veuillez contacter l'auteur pour supprimer le message.)