题目链接:https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
思路:用一个指针不断向后遍历,同时用另一个节点保存它的前一个元素的值,
以及用一个boolean 变量看它的前一个元素是否有效。从链表的第二个节点开始遍历,
while循环结束后判断该链表的最后一个节点是否有效。
当遍历到下一个不同的节点时更新该boolean 变量。
AC 0ms 100% Java:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null||head.next==null)
return head;
ListNode dummy=new ListNode(0),d=dummy;
ListNode prev=head, p=head.next;;
boolean flag=true;
while(p!=null){
if(p.val!=prev.val&&flag){
ListNode temp=new ListNode(prev.val);
d.next=temp;
d=d.next;
flag=true;
}else if(p.val==prev.val){
flag=false;
}else
flag=true;
prev=p;
p=p.next;
}
if(flag){
ListNode temp=new ListNode(prev.val);
d.next=temp;
}
return dummy.next;
}
}