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;
        }
    }
}
相关推荐
白榆maple24 分钟前
(蓝桥杯C/C++)——基础算法(下)
算法
JSU_曾是此间年少28 分钟前
数据结构——线性表与链表
数据结构·c++·算法
sjsjs1135 分钟前
【数据结构-合法括号字符串】【hard】【拼多多面试题】力扣32. 最长有效括号
数据结构·leetcode
此生只爱蛋1 小时前
【手撕排序2】快速排序
c语言·c++·算法·排序算法
blammmp2 小时前
Java:数据结构-枚举
java·开发语言·数据结构
昂子的博客2 小时前
基础数据结构——队列(链表实现)
数据结构
咕咕吖2 小时前
对称二叉树(力扣101)
算法·leetcode·职场和发展
九圣残炎2 小时前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
lulu_gh_yu3 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
丫头,冲鸭!!!3 小时前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法