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;
        }
    }
}
相关推荐
We་ct9 分钟前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript
Lionel68915 分钟前
分步实现 Flutter 鸿蒙轮播图核心功能(搜索框 + 指示灯)
算法·图搜索算法
小妖66618 分钟前
js 实现快速排序算法
数据结构·算法·排序算法
xsyaaaan21 分钟前
代码随想录Day30动态规划:背包问题二维_背包问题一维_416分割等和子集
算法·动态规划
zheyutao1 小时前
字符串哈希
算法
A尘埃1 小时前
保险公司车险理赔欺诈检测(随机森林)
算法·随机森林·机器学习
大江东去浪淘尽千古风流人物2 小时前
【VLN】VLN(Vision-and-Language Navigation视觉语言导航)算法本质,范式难点及解决方向(1)
人工智能·python·算法
独好紫罗兰3 小时前
对python的再认识-基于数据结构进行-a003-列表-排序
开发语言·数据结构·python
wuhen_n3 小时前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
努力学算法的蒟蒻3 小时前
day79(2.7)——leetcode面试经典150
算法·leetcode·职场和发展