le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dato il nodo head head di una lista collegata e un valore intero, eliminare tutti i nodi nella lista collegata che soddisfano Node.val == val e restituire il nuovo nodo head.
Esempio 1:
Ingresso: testa = [1,2,6,3,4,5,6], val = 6
Uscita: [1,2,3,4,5]
Esempio 2:
Ingresso: testa = [], val = 1
Produzione: []
Esempio 3:
Ingresso: testa = [7,7,7,7], val = 7
Produzione: []
suggerimento:
Il numero di nodi nell'elenco è compreso nell'intervallo [0, 104]
1 <= Nodo.val <= 50
0 <= valore <= 50
Quello che segue è il codice che utilizza Java per risolvere il problema della rimozione di elementi da un elenco collegato:
- 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'idea di questo codice è: creare un nodo testa virtuale 'manichino ', punta il suo puntatore 'successivo' al nodo principale 'head' dell'elenco collegato originale. Quindi, attraversa l'elenco collegato attraverso un ciclo e quando viene incontrato un nodo con un valore uguale a "val", viene eliminato dall'elenco collegato. Infine, viene restituito il nodo 'successivo' di 'dummy', che è il nodo principale della nuova lista collegata dopo aver eliminato il nodo del valore specificato.
(L'articolo è un riassunto e un riferimento ad alcune esperienze personali dell'autore nel processo di apprendimento di Java. Se ci sono posti inappropriati o sbagliati, criticali e correggili. Lavoreremo duro per correggerli. Se c'è qualche violazione , si prega di contattare l'autore per eliminare il post.)