21.03.10 LeetCode82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//递归思想 对每一个头结点都检查next是否与头相等
if(head==null || head.next == null)
return head;
int temp = head.val;
//先判断下一节点值与当前节点是否相等
if(temp == head.next.val)
{
while(head!=null && temp==head.val)
head = head.next;
return deleteDuplicates(head);
}
else
{
//如果当前节点与下一个节点元素不相等,则以head.next为头结点进行递归执行。
head.next = deleteDuplicates(head.next);
return head;
}
}
}