2487. Remove Nodes From Linked List

2487. Remove Nodes From Linked List

2487. Remove Nodes From Linked List

Medium

You are given the head of a linked list.

Remove every node which has a node with a greater value anywhere to the right side of it.

Return the head of the modified linked list.

Example 1:

Input: head = [5,2,13,3,8]

Output: [13,8]

Explanation: The nodes that should be removed are 5, 2 and 3.

Node 13 is to the right of node 5.
Node 13 is to the right of node 2.
Node 8 is to the right of node 3.

Example 2:

Input: head = [1,1,1,1]

Output: [1,1,1,1]

Explanation: Every node has value 1, so no nodes are removed.

Constraints:

The number of the nodes in the given list is in the range [1, 105].
1 <= Node.val <= 105

Solution:

/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val = 0, $next = null) {
* $this->val = $val;
* $this->next = $next;
* }
* }
*/
class Solution {

/**
* @param ListNode $head
* @return ListNode
*/
function removeNodes($head) {
if ($head == null) {
return null;
}
$head->next = $this->removeNodes($head->next);
return $head->next != null && $head->val < $head->next->val ? $head->next : $head;
}
}

Leave a Reply

Your email address will not be published. Required fields are marked *