网站访问大小,做网站必备软件,建设网站 托管 费用,区块链开发与应用专业#x1f680; 算法题 #x1f680; #x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 #x1f340; #x1f332; 越难的东西,越要努力坚持#xff0c;因为它具有很高的价值#xff0c;算法就是这样✨ #x1f332; 作者简介#xff1a;硕风和炜#xff0c;… 算法题 算法刷题专栏 | 面试必备算法 | 面试高频算法 越难的东西,越要努力坚持因为它具有很高的价值算法就是这样✨ 作者简介硕风和炜CSDN-Java领域新星创作者保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享 恭喜你发现一枚宝藏博主,赶快收入囊中吧 人生如棋我愿为卒行动虽慢可谁曾见我后退一步 算法题 目录 题目链接⛲ 题目描述 求解思路实现代码运行结果⚡ 数据结构设计 求解思路 实现代码 运行结果 共勉 题目链接
1670. 设计前中后队列
⛲ 题目描述
请你设计一个队列支持在前中后三个位置的 push 和 pop 操作。
请你完成 FrontMiddleBack 类
FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void pushMiddle(int val) 将 val 添加到队列的 正中间 。 void pushBack(int val) 将 val 添加到队里的 最后面 。 int popFront() 将 最前面 的元素从队列中删除并返回值如果删除之前队列为空那么返回 -1 。 int popMiddle() 将 正中间 的元素从队列中删除并返回值如果删除之前队列为空那么返回 -1 。 int popBack() 将 最后面 的元素从队列中删除并返回值如果删除之前队列为空那么返回 -1 。 请注意当有 两个 中间位置的时候选择靠前面的位置进行操作。比方说
将 6 添加到 [1, 2, 3, 4, 5] 的中间位置结果数组为 [1, 2, 6, 3, 4, 5] 。 从 [1, 2, 3, 4, 5, 6] 的中间位置弹出元素返回 3 数组变为 [1, 2, 4, 5, 6] 。
示例 1
输入 [“FrontMiddleBackQueue”, “pushFront”, “pushBack”, “pushMiddle”, “pushMiddle”, “popFront”, “popMiddle”, “popMiddle”, “popBack”, “popFront”] [[], [1], [2], [3], [4], [], [], [], [], []] 输出 [null, null, null, null, null, 1, 3, 4, 2, -1]
解释 FrontMiddleBackQueue q new FrontMiddleBackQueue(); q.pushFront(1); // [1] q.pushBack(2); // [1, 2] q.pushMiddle(3); // [1, 3, 2] q.pushMiddle(4); // [1, 4, 3, 2] q.popFront(); // 返回 1 - [4, 3, 2] q.popMiddle(); // 返回 3 - [4, 2] q.popMiddle(); // 返回 4 - [2] q.popBack(); // 返回 2 - [] q.popFront(); // 返回 -1 - [] 队列为空
提示
1 val 109 最多调用 1000 次 pushFront pushMiddle pushBack popFront popMiddle 和 popBack 。 求解思路实现代码运行结果 ⚡ 数据结构设计 求解思路
通过一个LinkedList数据结构来实现三个前、中、后队列。添加的时候在指定的位置加入返回删除的时候直接也直接删除指定的位置的元素即可。实现代码如下所示 实现代码
class FrontMiddleBackQueue {private ListInteger queue;public FrontMiddleBackQueue() {this.queuenew LinkedList();}public void pushFront(int val) {queue.add(0,val);}public void pushMiddle(int val) {queue.add((queue.size())/2,val);}public void pushBack(int val) {queue.add(val);}public int popFront() {return queue.size()1?-1:queue.remove(0);}public int popMiddle() {return queue.size()1?-1:queue.remove((queue.size()-1)/2);}public int popBack() {return queue.size()1?-1:queue.remove(queue.size()-1);}
}/*** Your FrontMiddleBackQueue object will be instantiated and called as such:* FrontMiddleBackQueue obj new FrontMiddleBackQueue();* obj.pushFront(val);* obj.pushMiddle(val);* obj.pushBack(val);* int param_4 obj.popFront();* int param_5 obj.popMiddle();* int param_6 obj.popBack();*/运行结果 共勉
最后我想和大家分享一句一直激励我的座右铭希望可以与大家共勉