remove-duplicates-from-sorted-list Java code

来源:互联网 发布:思维导图软件 编辑:程序博客网 时间:2024/05/21 21:45

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given1->2->3->3->4->4->5, return1->2->5.
Given1->1->1->2->3, return2->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) {        if(head == null) return null;        ListNode preHead = new ListNode(0);        preHead.next = head;        ListNode pre = preHead;        ListNode p1 = head;        ListNode p2 = p1.next;        while(p2 != null){            while(p2 != null && p1.val != p2.val){                pre = pre.next;                p1 = p1.next;                p2 = p2.next;            }            if(p2 == null) return preHead.next;            while(p2 != null && p2.val == p1.val) p2 = p2.next;            if(p2 == null) {                pre.next = null;                return preHead.next;            }            pre.next = p2;            p1 = p2;            p2 = p2.next;        }        return preHead.next;    }}
阅读全文
0 0