美文网首页
剑指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

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,...

  • 剑指offer15 反转链表

    题目: 分析: 代码:

  • 剑指

    遥望中原九点烟,风云直上七重天。 今朝再向江湖去,一剑流星谁比肩? 2011.10(1488)

  • 剑指

    1. 二维数组中查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照...

  • [leetcode 剑指offer15]二进制中的1的个数

    题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 ...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer

    第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...

  • 剑指BAT

    Android工作5年半了,一毕业就开始做这行。在现在这家公司工作了3年整,最近有换工作的打算,所以在猎聘...

  • 《剑指offer》

    4.调整数组顺序使奇数位于偶数前面 题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇...

  • 气剑指

    “聚气于指尖,凝其成剑,利可断金。”牢头对身边的狱卒说。 只见牢头举起的右手指尖逐渐变红,转而变白,隐隐发出音量很...

网友评论

      本文标题:剑指offer15

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