删除有序链表中重复出现的元素
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为1→2→3→3→4→4→5, 返回1→2→5
给出的链表为1→1→1→2→3, 返回2→3
代码
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
//尾指针为空返回
if(head==null) return null;
ListNode nx = head.next;
//下个指针为空返回当前指针
if(nx==null) return head;
if(head.val == nx.val){
//清楚连续相同指针
while(head.val == nx.val){
head = nx;
nx = nx.next;
//若连续相同指针后,下个指针为空,则跳出循环返回空
if(nx == null) break;
}
return deleteDuplicates(nx);
}
else{
head.next = deleteDuplicates(nx);
return head;
}
}
}