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

【LeetCode】每日一题 2024_9_30 座位预约管理系统(堆)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:座位预约管理系统

代码与解题思路

type SeatManager struct {
    sort.IntSlice // 默认最小堆
}

// 非常常规的一道堆的题目,建一个最小堆
func Constructor(n int) SeatManager {
    m := SeatManager{make([]int, n)}
    for i := range m.IntSlice {
        m.IntSlice[i] = i+1 // 座位号从 1 开始
    }
    return m
}

// 返回最小编号的座位(把堆顶出堆)
func (m *SeatManager) Reserve() int {
    return heap.Pop(m).(int)
}

// 添加一个可预约座位,将 seatNumber 入堆
func (m *SeatManager) Unreserve(seatNumber int)  {
    heap.Push(m, seatNumber)
}

func (m *SeatManager) Push(v any) { m.IntSlice = append(m.IntSlice, v.(int)) }
func (m *SeatManager) Pop() any { a := m.IntSlice; v := a[len(a)-1]; m.IntSlice = a[:len(a)-1]; return v }

/**
 * Your SeatManager object will be instantiated and called as such:
 * obj := Constructor(n);
 * param_1 := obj.Reserve();
 * obj.Unreserve(seatNumber);
 */

今天这道题可以说是非常常规了,只要是学过数据结构,学过堆/优先级队列(priority_queue)应该都能看出来,这里就不过多赘述了,注释也非常详细

但是,自从换上 Golang 后,每次写堆相关的题都是痛苦面具,因为 Golang 的堆非常麻烦,STL 比这玩意好用太多,但 . . . 来都来了,还是好好练习一下

今天这道题也算是可以当做 Golang 堆的一个简便实现的模版了

视频实况

【【LeetCode】每日一题 2024_9_30 座位预约管理系统(堆)】

每天进步一点点

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


http://www.kler.cn/news/327252.html

相关文章:

  • JWT 漏洞 - 学习手册
  • 【BUG等级划分 S,A-C】
  • 技术成神之路:设计模式(十九)桥接模式
  • ffmpeg录制视频功能
  • 无人机在科研与教育领域的应用!
  • 计算机网络实验4——实现局域网的组建、互连及VLAN的划分
  • PHP中常用的字符串函数详解
  • springboot厨房达人美食分享平台(源码+文档+调试+答疑)
  • HTML+CSS - 表单交互(一)
  • 堆【数据结构C语言版】【 详解】
  • 【Transformers实战篇1】基于Transformers的NLP解决方案
  • 公网IP和内网IP比较
  • 数据结构之手搓顺序表(顺序表的增删查改)
  • plt等高线图的绘制
  • 智能家居技术的前景和现状
  • LeetCode讲解篇之15. 三数之和
  • Frp服务部署
  • 【Qt】Qt安装(2024-10,QT6.7.3,Windows,Qt Creator 、Visual Studio、Pycharm 示例)
  • string为什么存储在堆里
  • EP42 公告详情页
  • Mac制作Linux操作系统启动盘
  • 蜘蛛爬虫的ip来自机房,用户的爬虫来自于哪里
  • 日常工作第10天:
  • web笔记
  • uni-app ios 初次进入网络没有加载 导致出现异常
  • 计算机毕业设计 基于深度学习的短视频内容理解与推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • nacos client 本地缓存问题
  • 信息安全数学基础(23)一般二次同余式
  • 正则表达式使用指南(内容详细,通俗易懂)
  • YOLOv8改进 - 注意力篇 - 引入SCAM注意力机制