Leecode82
使用三指针操作,h指针方便删除节点
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//特殊情况先判断
if(head == null)
return null;
if(head.next == null)
return head;
ListNode addHead = new ListNode(0);
ListNode h = addHead;
ListNode p = head;
ListNode q = p.next;
h.next = p;
while(q != null){
//去除相等的区间
if(p.val == q.val){
while(q.next != null && q.val == q.next.val)
q = q.next;
h.next = q.next;
p = h.next;
if(p != null)
q = p.next;
else
q = null;
} else {
//没有相等区间指针往后
h = h.next;
p = p.next;
q = q.next;
}
}
return addHead.next;
}
}