标签:
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
/** * 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 the linked list */ public static ListNode deleteDuplicates(ListNode head) { // write your code here if(head == null || head.next == null) return head; ListNode fakehead = new ListNode(0); fakehead.next = head; ListNode p1 = fakehead; ListNode p2 = head; while(p2 != null && p2.next != null){ while(p2 != null && p2.next != null && p2.val != p2.next.val){ p1 = p1.next; p2 = p2.next; } if(p2.next == null) break; while(p2 != null && p2.next != null && p2.val == p2.next.val){ p2 = p2.next; if(p2 != null && p2.next != null && p2.val != p2.next.val){ p2 = p2.next; } } if(p2.next == null){ p1.next = null; } else{ p1.next = p2; p2 = p2.next; p1 = p1.next; } } return fakehead.next; } }
litncode-medium-Remove Duplicates from Sorted List II
标签:
原文地址:http://www.cnblogs.com/goblinengineer/p/5352418.html