思路:
链表常见的解决方案:快慢指针思路。
1.初始一个指针指向链表的第一个元素,一个指针指向链表的第二个元素,如果两个元素相等,移动第二个元素,直到移动到与第一个指针指向的元素不相等的元素。让第一个指针指向第二个指针的当前元素两个指针同时后移。
public static void main(String[] args) {
ListNode listNode1=new ListNode(1);
ListNode listNode2=new ListNode(1);
ListNode listNode3=new ListNode(2);
ListNode listNode4=new ListNode(3);
ListNode listNode5=new ListNode(3);
listNode1.next=listNode2;
listNode2.next=listNode3;
listNode3.next=listNode4;
listNode4.next=listNode5;
ListNode listNode = deleteDuplicates(listNode1);
while (listNode!=null){
System.out.print(listNode.val+" ");
listNode=listNode.next;
}
}
public static ListNode deleteDuplicates(ListNode head) {
if(head==null || head.next==null){
return head;
}
ListNode head1=head;
ListNode head2=head.next;
while (head2!=null){
if(head1.val==head2.val){
head2=head2.next;
if(head2==null){
head1.next=null;
}
}else{
head1.next=head2;
head1=head1.next;
head2=head2.next;
}
}
return head;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}