给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2:
输入: 1->1->1->2->3 输出: 2->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
只知道使用递归一定可以,但是怎么都写不出来,还是看的评论整理下思路完成了
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null || head.next==null) return head;
if(head.next!=null&&head.val==head.next.val){
//循环掉所有相等的节点
while(head.next!=null&&head.val==head.next.val){
head=head.next;
}
return deleteDuplicates(head.next);//将相等节点的下一个节点作为开始从新计算
}else{
head.next=deleteDuplicates(head.next);
}
return head;
}
}