import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { if(head == null || head.next == null) return head; // 双端队列 Deque<ListNode> queue = new ArrayDeque<>(); ListNode cur = head; while(cur != null) { boolean isSame = false; while(queue.size() != 0 && queue.getLast().val == cur.val) { isSame = true; cur = cur.next; if(cur == null) break; } if(isSame) { queue.removeLast(); } if(!isSame) { queue.addLast(cur); cur = cur.next; } } ListNode pHead = new ListNode(-1); cur = pHead; while(!queue.isEmpty()) { cur.next = queue.removeFirst(); cur = cur.next; } cur.next = null; return pHead.next; } }