82 Remove Duplicates from Sorted List II

循环过一遍, 如果和上一个元素相同,或者和下一个元素相同,那么忽略它,不同,则添加到新的链表里面。

Python

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        q, pre, p = None, None, head
        newhead = None
        while p:
            if (p.next and p.val == p.next.val) or (pre and pre.val == p.val):
                pass
            else:
                if q is None:
                    q = ListNode(p.val)
                    newhead = q
                else:
                    q.next = ListNode(p.val)
                    q = q.next
            pre = p
            p = p.next
        return newhead

Java

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null){
            return head;
        }
        ListNode fakeHead = new ListNode(-1);
        fakeHead.next = head;
        ListNode prev = fakeHead, curr = head;
        while(curr != null){
            while(curr.next != null && curr.val == curr.next.val){
                curr = curr.next;
            }
            if(prev.next == curr){
                prev = prev.next;
            }
            else{
                prev.next = curr.next;
            }
            curr = curr.next;
        }
        return fakeHead.next;
    }
}

results matching ""

    No results matching ""