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

剑指offer-18-2. 删除链表中重复的结点

时间:2019-12-26 00:04:53      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:开始   根据   name   java   spell   operator   查找   www   ica   

剑指offer-18-2. 删除链表中重复的结点

链表

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

技术图片

思路:

采用递归的方法查找从头节点开始重复的节点

  • 如果没有重复节点,pHead.next指向deleteDuplication(pHead.next)返回的pHead.next本身
  • 如果有重复节点则pHead.next指向pHead.next.next…next(根据if判断决定)

public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        //base case
        if (pHead == null || pHead.next == null)
            return pHead;

        ListNode next = pHead.next大专栏  剑指offer-18-2. 删除链表中重复的结点punctuation">;
        if (pHead.val == next.val) {
            while (next != null && pHead.val == next.val)
                next = next.next;
            return deleteDuplication(next);//没有直接返回next的原因是next节点后可能还会有重复节点
        }else {
            //如果没有重复节点,pHead.next指向deleteDuplication(pHead.next)返回的pHead.next本身,如果有重复节点则pHead.next指向pHead.next.next...next(根据if判断决定)
            pHead.next = deleteDuplication(pHead.next);
            return pHead;
        }
    }
}

剑指offer-18-2. 删除链表中重复的结点

标签:开始   根据   name   java   spell   operator   查找   www   ica   

原文地址:https://www.cnblogs.com/lijianming180/p/12099495.html

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