描述
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
题目求解技巧:可以使用虚拟的头结点,减少代码复杂度,可以使用boolean变量来记录某一过程是否进行。一定要想清楚再开始写代码。 ?
ublic class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if(head==null) return null;
ListNode head_temp=new ListNode(Integer.MIN_VALUE);
head_temp.next=head;
ListNode temp=head_temp,pre_node=head_temp,next=null;
boolean T =false;
while(temp!=null)
{
T=false;
next=temp.next;
while(next!=null&&temp.val==next.val)
{
next=next.next;
T=true;
}
if(!T) {//while未运行
pre_node=temp;
temp=temp.next;
}
else{//while运行
pre_node.next=next;
temp=next;
}
}
return head_temp.next;
}
}
|