删除链表中重复的节点

111 阅读1分钟

删除链表中重复的节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。

样例1
输入:1->2->3->3->4->4->5
输出:1->2->5

样例2
输入:1->1->1->2->3
输出:2->3

时间复杂度O(n)

class Solution {
    public ListNode deleteDuplication(ListNode pHead) {
        if(pHead==null||pHead.next==null){
            return pHead;
        }
        //判断是否有重复
        if(pHead.val==pHead.next.val){
            //有重复的话一直判断,是否有连续多个相同的重复
            ListNode node=pHead.next;
            //将所有重复点忽略,直接连接到没有重复的点
            while(node != null && node.val == pHead.val){
                node=node.next;
            }
            return deleteDuplication(node);
        }else{
            //如果没有重复的数字,那么我就让pHead的下一个节点继续迭代
            pHead.next=deleteDuplication(pHead.next);
            return pHead;
        }
    }
}

创作打卡挑战赛

赢取流量/现金/CSDN周边激励大奖