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;
}
}
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!