剑指Offer_56_删除链表中重复的结点
2016-08-28 09:35
267 查看
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路
利用一个指针指向当前需要检查的结点p的前一个指针pre,对于当前要检查的结点p,对后面的结点进行遍历,直到找到与之不同的结点,如果存在相同的结点,那么p的前一个结点指向找到的不同于的p的结点,删除p和其重复的值,然后p指向pre的下一个结点(找到的不同于原来p的结点),继续判断,直到链表的末尾。实现
/*链表结点的定义*/ public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } /*实现*/ public class Solution { public ListNode deleteDuplication(ListNode pHead) { ListNode pre = null, p = pHead; if (pHead == null || pHead.next == null) return pHead; while (p != null){ ListNode q = p.next; int count = 0; while (q!=null && q.val == p.val){ q = q.next; count ++; } if (count > 0){ //有重复的 if (pre == null) pHead = q; else pre.next = q; }else { if (pre == null) pHead = p; pre = p; } p = q; } return pHead; } }
相关文章推荐
- 剑指offer-56.删除链表中重复的结点
- (C++)剑指offer-56:删除链表中重复的结点(链表)
- 剑指offer 删除链表中重复的结点
- 剑指Offer-删除链表中重复的结点
- 【剑指Offer】删除链表中重复的结点
- 剑指offer——删除链表中重复的结点
- 剑指offer面试题57 删除链表中重复的结点
- 剑指offer-删除链表中重复的结点
- 剑指Offer--057-删除链表中重复的结点
- 剑指offer—删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 【剑指offer】题57:删除链表中的重复的结点
- 剑指offer57道题(删除链表中的重复结点)
- 剑指Offer——删除链表中重复的结点
- 剑指offer--删除链表中重复的结点
- 剑指Offer-删除链表中重复的结点-java
- 剑指offer:删除链表中重复的结点
- 剑指offer57 删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 剑指offer—删除链表中重复的结点