链表又去重
Posted 码不停Ti
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表又去重相关的知识,希望对你有一定的参考价值。
还是链表 操作 这次 全部重复都要去掉
描述
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为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;
}
}
以上是关于链表又去重的主要内容,如果未能解决你的问题,请参考以下文章