给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
这和删除数组冗余数值是一样的方法
用快慢指针
快指针遍历链表慢指针停在唯一数值处
public class Solution83 {
public static class Node{
public int value;
public Node next;
public Node(int data){
value=data;
}
}
public static Node deleteDuplicates(Node head){
Node slow=head;
Node fast=head;
while(fast!=null){
fast=fast.next;
//到链表末尾了,小心空指针异常
if(fast==null){
slow.next=null;
return head;
}
if(fast.value!=slow.value){
slow.next=fast;
slow=fast;
}
}
return head;
}
public static void main(String[] args) {
Node n = new Node(2);
Node m = new Node(2);
Node q= new Node(3);
n.next=m;
m.next=q;
q.next=null;
System.out.println(deleteDuplicates(n).value);
}
}