le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
la prima la seconda
1 -> 1 -> 2 -> 3 -> 3 -> nullp1.val == p2.val quindi elimina p2, nota che p1 rimane invariato in questo momento
la prima la seconda
1 -> 2 -> 3 -> 3 -> nullp1.val != p2.val Quindi p1, p2 si spostano indietro
la prima la seconda
1 -> 2 -> 3 -> 3 -> null
la prima la seconda
1 -> 2 -> 3 -> 3 -> nullp1.val == p2.val quindi elimina p2
prima e dopo
1 -> 2 -> 3 -> nullQuando p2 == null esci dal ciclo
codice
- public ListNode deleteDuplicates(ListNode head) {
- // 链表节点 < 2
- if (head == null || head.next == null) {
- return head;
- }
- // 链表节点 >= 2
- ListNode p1 = head;
- ListNode p2;
- while ((p2 = p1.next) != null) {
- if (p1.val == p2.val) {
- p1.next = p2.next;
- } else {
- p1 = p1.next;
- }
- }
- return head;
- }
p1 è il nodo precedente da eliminare. Ogni ciclo confronta i valori di p2 e p3.
Se i valori di p2 e p3 vengono ripetuti, p3 continua a spostarsi indietro finché non viene trovato un nodo che non è duplicato con p2 e p1 punta a p3 per completare la cancellazione.
Se i valori di p2 e p3 non si sovrappongono, p1, p2 e p3 vengono spostati indietro di una posizione e continuano l'operazione precedente.
p2 o p3 sono nulli, esci dal ciclo
Quando p2 è nullo, ad esempio, la lista concatenata è 1 1 1 null
la1 la2 la3
s, 1, 1, 1, 2, 3, nullla1 la2 la3
s, 1, 1, 1, 2, 3, nullla1 la2 la3
s, 1, 1, 1, 2, 3, nullpagina 1 pagina 3
s, 2, 3, nullla1 la2 la3
s, 2, 3, nullla1 la2 la3
s, 2, 3, null
codice
- public ListNode deleteDuplicates(ListNode head) {
- if (head == null || head.next == null) {
- return head;
- }
-
- ListNode s = new ListNode(-1, head);
- ListNode p1 = s;
- ListNode p2;
- ListNode p3;
- while ((p2 = p1.next) != null && (p3 = p2.next) != null) {
- if (p2.val == p3.val) {
- while ((p3 = p3.next) != null
- && p3.val == p2.val) {
- }
- p1.next = p3;
- } else {
- p1 = p1.next;
- }
- }
- return s.next;
- }