LeetCode – Remove Duplicates from Sorted List II (Java)

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example, given 1->1->1->2->3, return 2->3.

Java Solution

```public ListNode deleteDuplicates(ListNode head) { ListNode t = new ListNode(0); t.next = head;   ListNode p = t; while(p.next!=null&&p.next.next!=null){ if(p.next.val == p.next.next.val){ int dup = p.next.val; while(p.next!=null&&p.next.val==dup){ p.next = p.next.next; } }else{ p=p.next; }   }   return t.next; }```
Category >> Algorithms >> Interview
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
```<pre><code>
String foo = "bar";
</code></pre>
```
• Swati Mewara

``` public ListNode removeDuplicate(ListNode head) { var previous = head; var p = head.next; var newHead = null;```

``` while ( p != null ) { if( p.val == previous.val ) { p = p.next; } else { previous = p; p = p.next; if ( p.val != previous.val && newHead == null ) { newHead = previous; } } } ```

```return newHead; } ```

There is bug in here. This just removes even number of nodes. Try example:
1->1->1->2->3 and it fails.

Fix do if (previous.data == current.data) in a while loop .

• Ankit Shah

not sure why formatting doesn’t work, this is a better solution with just one for loop

• Ankit Shah

public ListNode removeduplicate(ListNode head) {

if (head == null || head.next == null)

ListNode previous = head;
ListNode current = head.next;
ListNode tmp;

while (current != null) {
tmp = current.next;
if (previous.data == current.data) {
if (previous == head) {