剑指Offer(五十六)删除链表中重复的结点(Java版 )

一、题目描述

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

二、代码分析

public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        //新建一个头结点
        ListNode first = new ListNode(-1);
        //这个头结点的下一个结点为pHead
        first.next = pHead;
        //p结点为pHead
        ListNode p = pHead;
        //last结点为新建的头结点
        ListNode last = first;
        while (p != null && p.next != null) {
            if (p.val == p.next.val) {
                int val = p.val;
                while (p!= null&&p.val == val)
                    p = p.next;
                last.next = p;
            } else {
                last = p;
                p = p.next;
            }
        }
        return first.next;
    }
}

转载请标明出处,原文地址:https://blog.csdn.net/weixin_41835916
如果觉得本文对您有帮助,请点击支持一下,您的支持是我写作最大的动力,谢谢。

猜你喜欢

转载自blog.csdn.net/weixin_41835916/article/details/80830910