题目:
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
public class RemoveDuplicatesSortedList {
public static class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public static ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode left = head;
ListNode right = head.next;
while (right != null){
while(right != null && right.val == left.val){
right = right.next;
}
left.next = right;
left = left.next;
}
return head;
}
public static ListNode createLinkedList(int arr[], int n){
if (n == 0)
return null;
ListNode head = new ListNode(arr[0]);
ListNode cur = head;
for (int i = 1; i < n; i++) {
cur.next = new ListNode(arr[i]);
cur = cur.next;
}
return head;
}
public static void printLinkedList(ListNode head){
ListNode cur = head;
while (cur != null){
System.out.print(cur.val + " -> ");
cur = cur.next;
}
System.out.println("NULL");
}
public static void main(String[] args) {
int[] arr = {1, 1, 2, 3, 3};
ListNode head = createLinkedList(arr, arr.length);
printLinkedList(head);
ListNode node = deleteDuplicates(head);
printLinkedList(node);
}
}