import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here if (head == null || head.next == null) { return head; } Stack<ListNode> stack = new Stack<>(); ListNode cur = head; ListNode pre = null; while (cur != null) { if ((stack.isEmpty() && pre == null) || pre.val != cur.val) { stack.push(cur); } else if (!stack.isEmpty() && stack.peek().val == cur.val) { stack.pop(); } pre = cur; cur = cur.next; } ListNode newHead = null; while (!stack.isEmpty()) { cur = stack.pop(); if (newHead == null) { newHead = cur; newHead.next = null; } else { cur.next = newHead; newHead = cur; } } return newHead; } }