
链表/栈/队列
文章平均质量分 55
介绍了一些关于栈链表及队列的题型与总结
潇与上海
电科新生在读
展开
-
LeetCode239. 滑动窗口最大值[困难]
单调队列原创 2024-01-24 22:42:11 · 410 阅读 · 0 评论 -
[蓝桥杯 2021 省 AB2] 负载均衡
动态维护最值,又依据与某标准值的比较结果对该最值进行操作尤其是删除->堆-优先队列这个最值可能来自于某个计算的成果或者元素,但它确实是同类里的之"最"原创 2024-01-25 02:49:05 · 848 阅读 · 0 评论 -
P8661 [蓝桥杯 2018 省 B] 日志统计
小明维护着一个程序员论坛。N行。其中每一行的格式是ts id,表示在ts时刻编号id的帖子收到一个“赞”。现在小明想统计有哪些帖子曾经是“热帖”。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是“热帖”。具体来说,如果存在某个时刻T满足该帖在TTD这段时间内(注意是左闭右开区间)收到不少于K个赞,该帖就曾是“热帖”。给定日志,请你帮助小明统计出所有曾是“热帖”的帖子编号。原创 2024-01-25 21:26:16 · 1094 阅读 · 0 评论 -
[蓝桥杯 2015 国 B] 密文搜索
这个题我debug半天结果发现是map没运用的很熟++mp[haha];结果key-haha的value如果操作至零,haha这个key还在… 所以得特判:if(x.second)这个题是用hash+滑动窗口思想(不是滑动窗口实现),比较简单,就是看题得看老半天滑动窗口?因为我不想用substr()(忘了其实…原创 2024-01-26 01:16:12 · 1001 阅读 · 0 评论 -
LeetCode347. 前 K 个高频元素
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。输入: nums = [1,1,1,2,2,3], k = 2。k 的取值范围是 [1, 数组中不相同的元素的个数]输入: nums = [1], k = 1。原创 2024-01-24 23:43:13 · 355 阅读 · 0 评论 -
LeetCode232. 双栈实现队列
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你能否实现每个操作均摊时间复杂度为 O(1) 的队列?换句话说,执行 n 个操作的总时间复杂度为 O(n) ,即使其中一个操作可能花费较长时间。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)原创 2024-01-24 14:32:35 · 386 阅读 · 0 评论 -
LeetCode20. 有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 ‘()[]{}’ 组成。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”原创 2024-01-24 16:32:58 · 390 阅读 · 0 评论 -
LeetCode1047. 删除字符串中的所有相邻重复项
字符串模拟"栈的思想"原创 2024-01-24 17:21:05 · 402 阅读 · 0 评论 -
LeetCode225. 用队列实现栈
你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。原创 2024-01-24 15:28:05 · 385 阅读 · 0 评论 -
LeetCode150. 逆波兰表达式求值
tokens[i] 是一个算符(“+”、“-”、“*” 或 “/”),或是在范围 [-200, 200] 内的一个整数。输入:tokens = [“10”,“6”,“9”,“3”,“+”,“-11”,“该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )。解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]原创 2024-01-24 19:39:14 · 393 阅读 · 0 评论 -
LeetCode142. 环形链表 II
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。输入:head = [3,2,0,-4], pos = 1。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输出:返回索引为 1 的链表节点。解释:链表中没有环。原创 2024-01-24 01:48:50 · 350 阅读 · 0 评论 -
LeetCode19. 删除链表的倒数第 N 个结点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。链表中节点的数目在范围 [0, 100] 内。输入:head = [1,2,3,4]输入:head = [1]输出:[2,1,4,3]输入:head = []原创 2024-01-24 01:45:14 · 397 阅读 · 0 评论 -
LeetCode24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。链表中节点的数目在范围 [0, 100] 内。输入:head = [1,2,3,4]输入:head = [1]输出:[2,1,4,3]输入:head = []原创 2024-01-24 01:43:42 · 401 阅读 · 0 评论 -
LeetCode206. 反转链表
进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题。输入:head = [1,2,3,4,5]链表中节点的数目范围是 [0, 5000]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []原创 2024-01-24 01:40:42 · 368 阅读 · 0 评论 -
LeetCode707. 设计链表
void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。val 是当前节点的值,next 是指向下一个节点的指针/引用。void deleteAtIndex(int index) 如果下标有效,则删除链表中下标为 index 的节点。int get(int index) 获取链表中下标为 index 的节点的值。void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。原创 2024-01-24 01:36:04 · 415 阅读 · 0 评论 -
LeetCode203 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。列表中的节点数目在范围 [0, 104] 内。输入:head = [], val = 1。输出:[1,2,3,4,5]原创 2024-01-24 01:34:31 · 402 阅读 · 0 评论