当前位置: 首页 > article >正文

快手手撕 力扣2487 从链表中移除节点 单调栈 递归

Problem: 2487. 从链表中移除节点
在这里插入图片描述

👨‍🏫 参考题解

💖 递归解法

在这里插入图片描述

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNodes(ListNode head) {
        if(head.next == null){
            return head;// 递归出口
        }
        head.next = removeNodes(head.next);// 递归处理右侧的链表
        // 右侧的链表 经过处理后的头结点肯定是 右侧最大的节点
        if(head.next != null && head.val < head.next.val)// 如果当前节点小于右侧最大的节点
        {
            return head.next;// 删除当前节点
        }
        else{
            return head;// 不处理
        }
    }
}

💖 单调栈

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
  	public ListNode removeNodes(ListNode head)
	{
		LinkedList<ListNode> stack = new LinkedList<>();
		while (head != null)
		{
			stack.push(head);
			head = head.next;
		}
		while (!stack.isEmpty())
		{
			if (head == null || stack.peek().val >= head.val)
			{
				stack.peek().next = head;
				head = stack.peek();
			}
			stack.pop();
		}
		return head;
	}
}

http://www.kler.cn/a/305217.html

相关文章:

  • HarmonyOS 如何实现传输中的数据加密
  • HTTP协议基础
  • 虚拟机安装Ubuntu 24.04服务器版(命令行版)
  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • 机器学习——贝叶斯
  • 机器学习基础02_特征工程
  • HTTP 请求方式`application/x-www-form-urlencoded` 与 `application/json` 怎么用?有什么区别?
  • C++编译环境(IDE)推荐及安装
  • 美国硅谷大带宽服务器带宽堵塞解决方案
  • Oracle发邮件功能:设置的步骤与注意事项?
  • 【Oracle】TIMESTAMP类型时间计算时间差
  • SprinBoot+Vue宠物共享平台的设计与实现
  • 性能诊断的方法(五):架构和业务诊断
  • 前端下载word、excel文件的两种方法
  • [数据集汇总]智慧交通-铁路相关数据集汇总
  • dedecms靶场(四种webshell姿势)
  • JMeter 入门之远程启动,服务模式,多机联测,负载均衡测试
  • 基于python+django+vue+MySQL的酒店推荐系统
  • Golang | Leetcode Golang题解之第396题旋转函数
  • 数据结构C //线性表(链表)ADT结构及相关函数
  • Qt与MQTT交互通信
  • 探索音视频SDK的双重核心:客户端与服务端的协同作用
  • 裸金属服务器与云服务器的区别有哪些?
  • 选择合适的工业制造营销代理机构:应关注哪些方面
  • 【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)
  • Axios 掌握现代 Web 开发的 HTTP 客户端