有序链表:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode result = new ListNode(-1);
result.next = head;
ListNode slow = result;
ListNode fast = result.next;
while (fast != null) {
while (fast.next != null && slow.next.val == fast.next.val)
fast = fast.next;
if ( slow.next == fast)
slow = fast;
else {
slow.next = fast.next;
}
fast = fast.next;
}
return result.next;
}
采用快慢指针,快指针用来跳过链表中重复的元素,慢指针用来拼接链表