在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。
样例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; } } }