2487. Remove Nodes From Linked List

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