这道题的目的是移除每个右侧有更大数值的节点,所以对于右边的节点是不受影响的。因此我们可以使用递归算法,一直调用此函数到链表中的最后一个节点。从最右边的节点开始判定该节点的值与该节点的next的值进行比较。
思路:
struct ListNode* removeNodes(struct ListNode* head) {
if(head == NULL)
{
return NULL;
}
head->next = removeNodes(head->next);
if(head->next && head->val < head->next->val)
{
return head->next;
}
else
{
return head;
}
}