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

简介: 给你一个链表的头节点 head 。移除每个右侧有一个更大数值的节点。返回修改后链表的头节点 head 。

 题目

给你一个链表的头节点 head

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

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

解题思路

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

    代码展示

    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;
            }
        }
    }

    image.gif


    目录
    相关文章
    |
    21天前
    |
    分布式计算 Java MaxCompute
    ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
    任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
    |
    1月前
    |
    存储 安全 Java
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    24 3
    |
    1月前
    |
    分布式计算 资源调度 Hadoop
    大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
    大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
    77 4
    |
    1月前
    LeetCode第二十四题(两两交换链表中的节点)
    这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
    18 0
    LeetCode第二十四题(两两交换链表中的节点)
    |
    1月前
    Leetcode第十九题(删除链表的倒数第N个节点)
    LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
    44 0
    Leetcode第十九题(删除链表的倒数第N个节点)
    |
    1月前
    |
    分布式计算 Java Hadoop
    Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
    Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
    62 1
    |
    1月前
    (剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
    (剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
    49 0
    |
    1月前
    【LeetCode 46】450.删除二叉搜索树的节点
    【LeetCode 46】450.删除二叉搜索树的节点
    16 0
    |
    1月前
    |
    算法 Java
    LeetCode(一)Java
    LeetCode(一)Java
    |
    6天前
    |
    Java 开发者
    Java多线程编程中的常见误区与最佳实践####
    本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####