【Leetcode】2487. 从链表中移除节点

文章目录

  • 题目
  • 思路
  • 代码

题目

2487. 从链表中移除节点
【Leetcode】2487. 从链表中移除节点_第1张图片

思路

1、递归移除节点:

  • 如果头节点为空,直接返回空。
  • 递归调用函数处理下一个节点 head->next。
  • 在递归返回后,判断当前节点的值是否小于之前记录的最大值 maxVal。
  • 如果小于 maxVal,说明需要移除当前节点,返回下一个节点 head->next,即跳过当前节点。
  • 如果不小于 maxVal,更新 maxVal 为当前节点值的最大值。
    最后返回当前节点。

2、返回处理后的头节点:

  • 在递归中不断更新链表,返回处理后的头节点。

代码

class Solution {
private:
    int maxVal = 0;
public:
    ListNode* removeNodes(ListNode* head) {
        if(head == nullptr) return head;
        head->next = removeNodes(head->next);
        if(head->val < maxVal) return head->next;
        maxVal = max(head->val, maxVal);
        return head;
    }
};

你可能感兴趣的:(练习题(记录做题想法),leetcode,链表,算法,c++)