DEV Community

Cover image for 2487. Remove Nodes From Linked List
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on • Updated on

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

Top comments (0)