Stack
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public ListNode removeNodes(ListNode head) { Stack<ListNode> decreaseStack = new Stack<>();
ListNode curr = head; while (curr != null) { while (!decreaseStack.isEmpty() && curr.val > decreaseStack.peek().val) { decreaseStack.pop(); }
decreaseStack.push(curr); curr = curr.next; }
ListNode next = null; while (!decreaseStack.isEmpty()) { ListNode node = decreaseStack.pop(); node.next = next; next = node; }
return next; } }
|
Stack
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public ListNode removeNodes(ListNode head) { Stack<ListNode> decreaseStack = new Stack<>(); ListNode sentinel = new ListNode(Integer.MAX_VALUE); decreaseStack.push(sentinel);
ListNode curr = head; while (curr != null) { while (!decreaseStack.isEmpty() && curr.val > decreaseStack.peek().val) { decreaseStack.pop(); }
decreaseStack.peek().next = curr; decreaseStack.push(curr); curr = curr.next; }
return sentinel.next; } }
|
References
2487. Remove Nodes From Linked List