还是链表 操作 这次 全部重复都要去掉 描述 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。 例如: 给出的链表为1 \to 2\to 3\to 3\to 4\to 4\to51→2→3→3→4→4→5, 返回1\to 2\to51→2→5. 给出的链表为1\to1 \to 1\to 2 \to 31→1→1→2→3, 返回2\to 32→3.
示例1 输入: {1,2,2} 复制 返回值: {1}
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null) return null;
ListNode head0 = new ListNode(Integer.MIN_VALUE);
head0.next=head;
ListNode prev=head0,before=head0;// pre 走的慢
while(head!=null)
{ // 和前面 不一样 // 和 后面也不一样
if(head.val!=before.val && (head.next==null || head.next.val!=head.val))// 这个节点是 独一无二的 后面不会再出现
{
prev.next=head;//这个才修改了节点
prev=prev.next;
}
head=head.next;// 走的快
before=before.next;// 新节点开始往后走 慢一步
}
prev.next=null;
return head0.next;
}
}