【js版】 剑指offer【13】删除链表中重复的节点

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 21:04   60   0

题目描述:

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

这个不写题目分析了,直接上代码吧

代码:

function deleteDuplication(pHead)
        {
           // write code here
           if(pHead == null || pHead.next == null){ // 只有0个或1个结点,则返回
               return pHead;
           }
           if(pHead.val == pHead.next.val){  // 当前结点是重复结点
               let pNode = pHead.next;
               while(pNode != null && pHead.val == pNode.val){
                    // 跳过值与当前结点相同的全部结点,找到第一个与当前结点不同的结点
                   pNode = pNode.next;
               }
               // 从第一个与当前结点不同的结点开始递归
               return deleteDuplication(pNode)
           }else{
                // 当前结点不是重复结点
                // 保留当前结点,从下一个结点开始递归
               pHead.next = deleteDuplication(pNode);
               return pHead;
           }
        
        }

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP