美文网首页
剑指offer15

剑指offer15

作者: MonarchNie | 来源:发表于2019-07-08 11:33 被阅读0次

    题目描述

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

    解题思路分析

    其实吧,这道题对着代码自然而然就知道怎么写的了,直接上代码吧

    代码实现

    public ListNode deleteDuplication(ListNode pHead) {
        //pHead为空或者链表只有一个元素时,直接返回
        if (pHead == null || pHead.next == null) {
            return pHead;
        }
        //如果头节点开始就开始有重复的话,那就定位到把重复的头节点去点的那个节点,利用递归再继续计算
        if (pHead.val == pHead.next.val) {
            ListNode pNode = pHead.next;
            //去点所有跟头节点重复的节点
            while (pNode != null && pNode.val = pHead.val) {
                pNode = pNode.next;
            }
            //递归调用
            return deleteDuplication(pNode);
        } else {
            //如果头节点没有重复,那就可以递归的调用来计算留下头节点之后的链表的去重了
            pHead.next = deleteDuplication(pHead.next);
            return pHead;
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指offer15

          本文链接:https://www.haomeiwen.com/subject/hzcohctx.html