83. Remove Duplicates from Sorted List (Easy)
https://leetcode.com/problems/remove-duplicates-from-sorted-list/
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2 Output: 1->2
Example 2:
Input: 1->1->2->3->3 Output: 1->2->3
Solutions
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return head;
}
// preHead used to link to head and faciliate remove operation
ListNode preHead = new ListNode(-1);
preHead.next = head;
ListNode p1 = head;
ListNode p2 = head.next;
while (p2 != null) {
if (p1.val != p2.val) {
// different values, move on pointers
p1 = p2;
p2 = p2.next;
} else {
// same value, remove p2, link p1.next = p2.next; p2 = p1.next
p1.next = p2.next;
p2 = p1.next;
}
}
return preHead.next;
}
}