题目链接:
JZ56 删除链表中重复的结点
本题思路:
/*
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 node = pHead.next;
while(node != null && node.val == pHead.val) {
// 跳过重复结点 结束时node为重复结点后的第一个新节点
node = node.next;
}
// 从新结点开始递归
return deleteDuplication(node);
} else { // 非重复结点
pHead.next = deleteDuplication(pHead.next);
return pHead;
}
}
}