2487. 从链表中移除节点 --力扣 --JAVA

题目

给你一个链表的头节点 head 。

移除每个右侧有一个更大数值的节点。

返回修改后链表的头节点head。

解题思路

  1. 移除每个右侧有一个更大数值的节点,所以可以利用深度遍历,从后往前进行比较;
  2. 创建变量max来表示当前右侧的最大值;
  3. 将最后节点的值赋值给max;
  4. 若当前节点的值小于当前节点则移除,否则修改max为当前节点的值,链表是单向的,直接移除当前节点不好移除,可以将下个节点的值和next赋值给当前节点,即用下个节点取代当前节点。

代码展示

java 复制代码
class Solution {
    private int max = 0;
    public ListNode removeNodes(ListNode head) {
        dfs(head);
        return head;
    }
    private void dfs(ListNode root){
        if(root == null){
            return;
        }
        dfs(root.next);
        if(root.val < max){
            root.val = root.next.val;
            root.next = root.next.next;
        } else {
            max = root.val;
        }
    }
}
相关推荐
hanlin036 小时前
刷题笔记:力扣第32题-最长有效括号
笔记·算法·leetcode
All for pursuit.7 小时前
【动态规划-21】312.戳气球
数据结构·c++·算法·leetcode·动态规划
碧海银沙音频科技研究院9 小时前
基于炬芯ATS3089X自研AEC声学回声消除算法
算法
通问AI9 小时前
在两台 Mac Studio 上跑 800B 模型:MLX + RDMA over Thunderbolt 实测与四道门选型法
算法
ZywOo6239 小时前
《算法竞赛进阶指南》0x03 前缀和与差分
算法
Scintilla_y10 小时前
DAY2 滑动窗口
算法·leetcode·散列表
lvwangshu10 小时前
笛卡尔树
算法·图论
026d2310 小时前
状态信号只知“其然”不知“其所以然”:变工况机械故障诊断的物理盲区
算法
姜鱼问生10 小时前
备份和服务器在同一台机器上,等于没备份
算法·架构
姜鱼问生10 小时前
别再 chmod 777 了,用 ACL 给它开一扇窗
后端·算法·架构