Remove Duplicates from Sorted List II

来源:互联网 发布:帝国cms图片集分割 编辑:程序博客网 时间:2024/09/21 08:56

这道题刚开始感觉有点复杂,后面还是做出来了。 不过看了网上的答案,有更易于思考的角度

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.

分析: 在前面加一个Node, 设置成最大值。 这样可以归一化。 后面先判断 list 是否为空。然后用 cur 检查重复的元素。

# Definition for singly-linked list.# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    # @param head, a ListNode    # @return a ListNode    def deleteDuplicates(self, head):        if head==None:            return head                prehead = ListNode(10**22)        prehead.next = head                precur,cur = prehead,head        while cur!=None:            while (cur.next!=None and precur.next.val==cur.next.val):                cur = cur.next                        if precur.next==cur:                precur = precur.next            else:                precur.next = cur.next                        cur = cur.next                return prehead.next


C++

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *deleteDuplicates(ListNode *head) {        if (head==NULL){            return head;        }                ListNode* prehead = new ListNode(100000000);        prehead->next = head;                ListNode* precur;        ListNode* cur;        precur = prehead;        cur = prehead->next;        while (cur!=NULL){            while(cur->next!=NULL && precur->next->val==cur->next->val){                cur = cur->next;            }            if (precur->next==cur){                precur = precur->next;            }else{                precur->next = cur->next;            }            cur = cur->next;        }        return prehead->next;    }};



总结:

1.  用指针时 ListNode* prehead = new ListNode(100000)

      用 new 这个关键字




































0 0
原创粉丝点击