https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/#/description
问题描述:重复的元素全都删除,一个不留。
思路解析:设立两个指针,一个滑动指向重复元素最后一个。当两个元素相连则同时向后滑动,否则相连。
代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode k=new ListNode(0);
k.next=head;
ListNode p=k;
ListNode f=head;
while(f!=null)
{
while(f.next!=null && f.val==f.next.val )
{
f=f.next;//f指向重复值的最后一个元素
}
if(p.next==f){
p=p.next;//如果前后连个相连,说明是不重复的元素相连,将指针后移
}else
{
p.next=f.next;
}
f=f.next;
}
return k.next;
}
}