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; } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) { return head; } ListNode temp = new ListNode(0); temp.next = head; ListNode pre = temp; ListNode cur = head; ListNode nex = head.next; boolean flag = false; while (nex != null) { if (cur.val == nex.val) { flag = true; nex = nex.next; if (nex == null) { pre.next = null; } } else { if (flag) { pre.next = nex; flag = false; } else { pre = cur; } cur = nex; nex = nex.next; } } return temp.next; } }
?
Remove Duplicates from Sorted List II
原文:http://hcx2013.iteye.com/blog/2224771