第一题 225. Implement Stack using Queues
题目描述
使用队列实现栈的下列操作:
push(x) – 将元素x压入栈.
pop() – 移除栈顶元素.
top() – 获得栈顶元素.
empty() – 返回栈是否为空.
注意:
你可以假设所有的操作都是有效的(例如,不会对空栈执行pop或者top操作)
取决于你使用的语言,queue可能没有被原生支持。你可以使用list或者deque(双端队列)模拟一个队列,只要保证你仅仅使用队列的标准操作即可——亦即只有如下操作是有效的:push to back(加入队尾),pop from front(弹出队首),size(取队列大小)以及is empty(判断是否为空)
算法
使用两个队列
|
|
利用queue每次取出后重新添加
|
|
第二题 232. Implement Queue using Stacks
题目描述
使用栈实现队列的下列操作:
push(x) – 将元素x加至队列尾部
pop() – 从队列头部移除元素
peek() – 获取队头元素
empty() – 返回队列是否为空
注意:
你只可以使用栈的标准操作——这意味着只有push to top(压栈), peek/pop from top(取栈顶/弹栈顶),以及empty(判断是否为空)是允许的
取决于你的语言,stack可能没有被内建支持。你可以使用list(列表)或者deque(双端队列)来模拟,确保只使用栈的标准操作即可
你可以假设所有的操作都是有效的(例如,不会对一个空的队列执行pop或者peek操作)
算法
双栈法
|
|
第三题 170. Two Sum III - Data structure design
题目描述
设计一个Data Structure,可以快速的添加和查询structure中是否存在两个数字的加和
算法
这道题如果面试时候遇到,需要询问是添加操作更多还是查询操作更多,然后根据情况给如设计的结构。
查询操作较多
|
|
添加操作较多
|
|
相关问题
1. Two Sum
关键思路:使用HashMap存储过去的value和index,这样即可在O(n)的情况下完成遍历
167. Two Sum II - Input array is sorted
关键思路:双指针,前后同时搜索结果
15. 3Sum
关键思路:先进行排序,然后利用双向指针进行大小确认,这样可以在O(n^2)的情况下找出所有的test cases
16. 3Sum Closest
关键思路:与之前的题目一样,只是对target的值稍微进行一下调整
259. 3Sum Smaller
关键思路:思路一样,sort + 双指针
18. 4Sum
关键思路:思路与之前问题相似,sort后,确定两个位置,然后使用双指针进行遍历