[leetcode] 82.Remove Duplicates from Sorted List II
来源:互联网 发布:网易大数据平台 编辑:程序博客网 时间:2024/06/11 21:47
题目:
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
题意:
这道题跟83题有所不同,这道题需要将有重复的节点全部删除。
思路:
遍历整个链表,保留两个指针,一个是当前扫描的指针front,一个是与front的val值不一样的指针tail。如果tail就是front->next,那说明front只出现了一次,保留该节点,否则说明这个值出现了不止一次,不需要保留。newHead用来保存新的链表的头结点,newTail保留新的链表的最后的节点位置。
代码如下:
/** * 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 == NULL)return head; ListNode *newHead = NULL,*front = head,*tail = head->next,*newCurr = NULL; while(tail != NULL){ while(tail != NULL && tail->val == front->val) tail = tail->next; if(tail == front->next){ if(newHead == NULL){ newHead = front; newTail = newHead; } else { newTail->next = front; newTail = newTail->next; } } front = tail; tail = ((tail == NULL)?NULL:tail->next); } if(front != NULL && tail == front->next){ if(newHead == NULL){ newHead = front; newTail = newHead; } else { newTail->next = front; newTail = newCurr->next; } } if(newTail != NULL)newTail->next = NULL; return newHead; }};
0 0
- LeetCode: Remove Duplicates from Sorted List II
- [Leetcode] Remove Duplicates from Sorted List II
- LeetCode: Remove Duplicates from Sorted List II
- [Leetcode] Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- [LeetCode]Remove Duplicates from Sorted List II
- [leetcode]Remove Duplicates from Sorted List II
- LeetCode-Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- LeetCode - Remove Duplicates from Sorted List II
- LeetCode | Remove Duplicates from Sorted List II
- LeetCode:Remove Duplicates from Sorted List II
- 【leetcode】Remove Duplicates from Sorted List II
- Leetcode: Remove Duplicates from Sorted List II
- leetcode Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List II
- iOS越狱包
- python+Eclipse+pydev环境搭建
- PHP 数组排序内置函数
- Excel Sheet Column Title
- 10个最好用的在线编译/调试工具
- [leetcode] 82.Remove Duplicates from Sorted List II
- MapReduce错误处理,任务调度及Shuffle过程
- JAVA & JSP 之旋转图片(JAVA图形化小程序——>网页应用)
- 九度OJ-题目1372:最大子向量和(连续子数组的最大和)
- 第七章
- 学习使用第三方控件IECapt截取网页图片
- FitWidth ImageView和TopCrop ImageView
- 写日志文件的代码
- replace into 浅析之一