Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode newHead = new ListNode(0); ListNode currentNode = newHead; ListNode first = head; boolean distinct = true; while(first != null){ if(first.next != null){ if(first.val == first.next.val) distinct = false; else{ if(distinct){ currentNode.next = first; currentNode = currentNode.next; } else distinct = true; } } //the last node else{ if(distinct){ currentNode.next = first; currentNode = currentNode.next; } } first = first.next; } currentNode.next = null; newHead = newHead.next; return newHead; } }