leetcode-面试题59 队列的最大值 Python
2020-03-15 12:14
507 查看
方法一:队列+双端队列
import queue class MaxQueue: def __init__(self): self.queue = queue.Queue() self.deque = queue.deque() def max_value(self) -> int: return self.deque[0] if self.deque else -1 def push_back(self, value: int) -> None: while self.deque and self.deque[-1] < value: self.deque.pop() self.deque.append(value) self.queue.put(value) def pop_front(self) -> int: if not self.deque: return -1 ans = self.queue.get() if ans == self.deque[0]: self.deque.popleft() return ans
方法二:队列+数组
import queue class MaxQueue: def __init__(self): self.queue = queue.Queue() self.stack = [] def max_value(self) -> int: return self.stack[0] if self.stack else -1 def push_back(self, value: int) -> None: self.queue.put(value) while self.stack and self.stack[-1] < value: self.stack.pop() self.stack.append(value) def pop_front(self) -> int: if not self.stack: return -1 ans = self.queue.get() if ans == self.stack[0]: self.stack.pop(0) return ans
方法三:数组+数组
class MaxQueue: def __init__(self): self.queue = [] self.max_stack = [] def max_value(self) -> int: return self.max_stack[0] if self.max_stack else -1 def push_back(self, valuea: int) -> None: self.queue.append(value) while self.max_stack and self.max_stack[-1] < value: self.max_stack.pop() self.max_stack.append(value) def pop_front(self) -> int: if not self.queue: return -1 ans = self.queue.pop(0) if ans == self.max_stack[0]: self.max_stack.pop(0) return ans
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- leetcode每日一题——面试题59 - II. 队列的最大值
- [LeetCode每日1题][中等] 面试题59 - II. 队列的最大值
- 队列思想及堆排序思想,leetcode239. 滑动窗口最大值python
- 【Golang】LeetCode-剑指Offer-面试题59 - I - 滑动窗口的最大值【两种写法】
- 牛客剑指Offer面试题59:队列的最大值(题目1:滑动窗口的最大值)
- 剑指Offer面试题59:队列的最大值(滑动窗口的最大值)
- 【LeetCode】Python实现-485. 最大连续1的个数
- LeetCode--Maximum Depth of Binary Tree (检索二叉树的最大深度)Python
- LeetCode精选TOP面试题104.二叉树的最大深度
- 剑指offer(59):滑动窗口的最大值(python版)
- LeetCode--Maximum Subarray(最大子数组)Python
- 利用python 完成leetcode85 最大矩形
- leetcode 找到树中距离最大的两个结点,Python实现
- LeetCode 53.最大子序和--动态规划法--Python3
- leetcode_[python/C++] 179. Largest Number(数字组合成最大数)
- [leetcode]53. Maximum Subarray 最大连续子串python实现【medium】
- LeetCode刷题笔记53:最大子序和(Python实现)
- leetcode-221 最大正方形 Python
- [leetcode]53. Maximum Subarray 最大连续子串python实现【medium】
- leetcode 239. Sliding Window Maximum 滑动窗口最大值Maximum + 优先级队列 + multiset + Heap