码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-03-24 00:58:28      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:有一个   class   算法   mic   head   delete   其他   刷题   链表   

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

 

技术图片

 

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

思路就是用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

标签:有一个   class   算法   mic   head   delete   其他   刷题   链表   

原文地址:https://www.cnblogs.com/aaamax/p/12556220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!