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


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

    链表

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

    Snipaste_2019-07-14_14-33-07

    思路:

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

    • 如果没有重复节点,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;
            }
        }
    }
    
  • 相关阅读:
    闲置安卓设备搭建Linux服务器实现外网访问
    Flume笔记
    动态规划算法助记
    Hexo 添加Live2D看板娘
    Oracle 助记
    搭建Discuz论坛
    逆向工程(助记)
    PL/SQL Developer连接本地Oracle 11g 64位数据库
    NSOperation的基础
    GCD基础
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12099495.html
Copyright © 2020-2023  润新知