有序链表的重复元素删除
来源:互联网 发布:威图网络柜图片 编辑:程序博客网 时间:2024/05/17 07:56
删除有两种:
(1)
(2)
用递归的方法,思路可以变得非常清晰和简单:
1 划分子问题:
从head开始,如果后面有重复,则一直向前,将head后面与head 相同的元素全部删除,然后删除head;
然后处理后面的子问题,并返回子问题的结果,也就是子链表按照题目要求处理后的结果;
class Solution {public: ListNode *deleteDuplicates(ListNode *head) { if( !head || !head->next) return head; ListNode *p=head->next; if(p->val ==head->val){//如果当前元素有重复, while(p && head->val==p->val){//则向前删除直到没有重复 ListNode *q=p->next; delete p; p=q; } delete head; return deleteDuplicates(p); }else{ head->next=deleteDuplicates(head->next); return head; } }};
/** * 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 || !head->next) return head; ListNode *p=head->next; if(head->val==p->val){//查看head 指向的元素是否有重复 while(p && head->val == p->val){//若有重复,则把后面重复的删除掉 ListNode *q=p->next; delete p; p=q; } //此处需要保留Head head->next=deleteDuplicates(head->next);//处理子问题 return head; }else{ head->next=deleteDuplicates(head->next);//处理子问题 return head; } }};
阅读全文
0 0
- 有序链表的重复元素删除
- 有序链表删除重复元素
- 删除一个有序链表的重复元素
- leetcode 删除有序链表中的重复元素
- [2178]链表的有序集合 (链表的插排法+重复元素的删除) SDUT
- 删除有序链表的重复元素 Remove Duplicates from Sorted List
- [LeetCode]83. Remove Duplicates from Sorted List(删除有序链表的重复元素 )
- 单链表删除有序重复元素
- 删除有序数组中重复出现的元素
- <顺序表>从一个有序顺序表中删除重复的元素
- Leetcode 删除重复的链表元素
- 删除链表中的重复的元素
- 链表所有重复元素的删除
- leetcode-83. Remove Duplicates from Sorted List(删除有序链表中的重复元素)
- 如何删除有序数组中的重复元素
- 删除有序链表中的重复节点
- 删除有序链表中的重复节点
- 链表删除重复元素
- POJ 1840 Eqs
- Vue+Echarts
- zoj 3817 Chinese Knot(hash+暴力)
- 自己的第一天
- 虚拟机下的Linux不能上网
- 有序链表的重复元素删除
- AbstractDbunitTestCase
- 链表常见题目
- JavaScript的基本语法
- Qt之Action
- 添加VivePort应用 广告
- node大内存操作Buffer
- qcadoo开源MES的初始配置
- MQTT的Payload(负载的最大值)是多少?