算法-链表-删除链表中重复的结点

122 阅读1分钟

题目描述

解题描述

//递归
public ListNode deleteDuplication(ListNode pHead) {
    //如果没有节点或者只有一个
    if (pHead == null || pHead.next == null)
        return pHead;
    //如果多个,找到下一个
    ListNode next = pHead.next;
    //如果当前值和下一个相等
    if (pHead.val == next.val) {
        //当下一个节点不为空且当前值和下一个相等时候
        while (next != null && pHead.val == next.val)
            //继续找下下一个
            next = next.next;
        //当最后一个节点或者 当前和下一个的值不相等,继续递归
        return deleteDuplication(next);
    } else {
        //不相等,那就继续递归
        pHead.next = deleteDuplication(pHead.next);
        return pHead;
    }
}