在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。
样例1
输入:1->2->3->3->4->4->5
输出:1->2->5
样例2
输入:1->1->1->2->3
输出:2->3
想法:用两个指针,一个指向当前节点,另一个移动,移动到另一个链表节点值不等于当前链表节点值得节点。然后删除中间得元素,达到去重得目的
class Solution{ public: ListNode* deleteDuplication(ListNode* head){ ListNode* dump = new ListNode(-1); dump->next = head; auto p = dump while(p->next){ auto q = p->next; while(q && p->next->val == q->val){ q = q->next; } if(p->next->next == q){ p = p->next; }else{ p->next = q; } } return dump->next; } };