链表-删除链表中重复的结点-java

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

/*解题思路:递归 */ /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode deleteDuplication(ListNode pHead) { //当前只有0或1个节点,之间返回 if(pHead==null||pHead.next==null){ return pHead; } if(pHead.val==pHead.next.val){//当节点与前下一个节点重复 ListNode pNode=pHead.next; //跳过与当前节点重复的所有节点,寻找第一个不重复的节点 while(pNode!=null&&pNode.val==pHead.val){ pNode=pNode.next; } return deleteDuplication(pNode); }else{//当前节点不是重复节点 pHead.next=deleteDuplication(pHead.next); //保留当前节点,从下一个节点开始递归 return pHead; }} }

    推荐阅读