Remove Duplicates from Sorted List(lintcode 112)
Description
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example
Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.
Interface
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode head is the head of the linked list
* @return: ListNode head of linked list
*/
public static ListNode deleteDuplicates(ListNode head) {
// write your code here
}
}
Idea
This problem is easier than Remove Duplicates from Unsorted List. Since the list is sorted, we only have to compare the value of current node with the value of the next node.
Solution
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode head is the head of the linked list
* @return: ListNode head of linked list
*/
public static ListNode deleteDuplicates(ListNode head) {
// write your code here
if (head == null) {
return head;
}
ListNode curr = head;
while (curr.next != null) {
if (curr.next.val == curr.val) {
curr.next = curr.next.next;
} else {
curr = curr.next;
}
}
return head;
}
}