删除有序链表中相同的元素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/难度中等)