leetcode 232. Implement Queue using Stacks
2016-07-05 22:12
543 查看
题目描述:
Implement the following operations of a queue using stacks.
push(x) -- Push element x to the back of queue.
pop() -- Removes the element from in front of queue.
peek() -- Get the front element.
empty() -- Return whether the queue is empty.
Notes:
You must use only standard operations of a stack -- which means only
and
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
解题思路:
本题比较简单,主要考察对队列和栈的理解,然后注意摆脱只能使用一个栈的思维定势就可以了
另附上leetcode上的题解,上面有对时空复杂度进行分析,时空复杂度在本题不是很直观(这涉及到均摊复杂度的概念 Amortized
Analysis ),可以看一下~
Implement the following operations of a queue using stacks.
push(x) -- Push element x to the back of queue.
pop() -- Removes the element from in front of queue.
peek() -- Get the front element.
empty() -- Return whether the queue is empty.
Notes:
You must use only standard operations of a stack -- which means only
push to top,
peek/pop from top,
size,
and
is emptyoperations are valid.
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
解题思路:
本题比较简单,主要考察对队列和栈的理解,然后注意摆脱只能使用一个栈的思维定势就可以了
class Queue { public: // Push element x to the back of queue. void push(int x) { in.push(x); } // Removes the element from in front of queue. void pop(void) { if(out.empty()) trans(); out.pop(); } // Get the front element. int peek(void) { if(out.empty()) trans(); return out.top(); } // Return whether the queue is empty. bool empty(void) { return out.empty() && in.empty(); } private: stack<int> in, out; void trans(){ while(!in.empty()){ out.push(in.top()); in.pop(); } } };
另附上leetcode上的题解,上面有对时空复杂度进行分析,时空复杂度在本题不是很直观(这涉及到均摊复杂度的概念 Amortized
Analysis ),可以看一下~
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解