首先创建一个新的结点,指向链表的头结点,此时这个结点就变成这个链表的头结点,设置两个结点 p 和 q,分别指向头结点和头结点的下一个结点,解法看图解。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
if(pHead == null) return null;
ListNode newNode = new ListNode(-1);
newNode.next = pHead;
ListNode p = newNode, q = pHead;
while(q != null) {
if(q.next != null && q.val == q.next.val) {
while(q.next != null && q.val == q.next.val) {
q = q.next;
}
q = q.next;
p.next = q;
} else {
p = q;
q = q.next;
}
}
return newNode.next;
}
} 
京公网安备 11010502036488号