删除有序链表中相同的元素ii

Posted aaamax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除有序链表中相同的元素ii相关的知识,希望对你有一定的参考价值。

今天写了关于删除有序链表中相同元素的链表题目,自己在算法设计方面确实是很薄弱,算法思路都没有就开始动笔,肯定结果很糟糕,还有一个就是近期是以刷题为主,而且刷题主要是要多多参考别人优秀成熟的代码。

 

技术图片

 

这道题题目很简单,难点在思路和细节上面

思路就是用st指向所有相同数的前一个节点,用指针p来实现遍历,找到所有相同节点以后,用st指向相同节点的后一个节点。

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(head==NULL) return head;
         ListNode *dummy=new ListNode(-1),*p=dummy,*st=NULL;   //dummy指针方便操作,便于比较head和head->next;
         dummy->next=head;
         int t=0;
         while(p->next&&p->next->next){
             if(p->next->val==p->next->next->val){
                 if(t==0)  st=p;                               
                 t=1;
                 p=p->next;}
             else if(t){
             t=0;
             st->next=p->next->next;
             p=st;}                                            //注意此时p指针的指向
             else
             p=p->next;
         }
         if(p->next->next==NULL&&t) st->next=NULL;
         return dummy->next;
    }
};

还有其他几种方法,明天再看。

 

以上是关于删除有序链表中相同的元素ii的主要内容,如果未能解决你的问题,请参考以下文章

牛客top101题---删除有序链表中重复的元素-II (java)

牛客top101题---删除有序链表中重复的元素-II (java)

删除有序链表中重复的元素-II(NC24/考察次数Top72/难度中等)

删除有序链表中重复的元素-II(NC24/考察次数Top72/难度中等)

删除有序链表中重复的元素-II(NC24/考察次数Top72/难度中等)

牛客题霸 NC24 删除有序链表中重复的元素-II