Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
思路:因为是有序的,定义双指针。如果相同,删去相同元素;如果不同,两个指针同时向前跑。
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null)
return null;
ListNode runner=head.next;
ListNode chaser=head;
while(runner!=null){
if(chaser.val==runner.val){
chaser.next=runner.next;
runner=runner.next;
}
else{
chaser=chaser.next;
runner=runner.next;
}
}
return head;
}
}
【注意】while(runner!=null),到了表尾,还是要操作{..}的。while(runner.next!=null),到了表尾,不操作{..}。