Leetcode 1670. 设计前中后队列

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第二&第三部分 二、使用 MODE 的参数提取和蒙特卡罗 三、最终参数提取 阅读详情

题目链接:Leetcode 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] 。

 

解题思路:

   使用双端队列进行模拟即可

class FrontMiddleBackQueue {
public:
    deque<int> q, t;
    FrontMiddleBackQueue() {
        while (!q.empty()) {
            q.pop_back();
        }
    }
    
    void pushFront(int val) {
        q.push_front(val);
    }
    
    void pushMiddle(int val) {
        deque<int>::iterator it = q.begin();
        q.insert(it+(q.size()/2), val);
        
    }
    
    void pushBack(int val) {
        q.push_back(val);
    }
    
    int popFront() {
        if (q.empty()) {
            return -1;
        }
        int f = q.front();
        q.pop_front();
        return f;
    }
    
    int popMiddle() {
        if (q.empty()) {
            return -1;
        }
        int f;
        deque<int>::iterator it = q.begin();
        if (q.size() % 2 == 0) {
            f = q[q.size()/2-1];
            q.erase(it + (q.size()/2-1));
        } else {
            f = q[q.size()/2];
            q.erase(it + q.size()/2);
        }
        return f;
    }
    
    int popBack() {
        if (q.empty()) {
            return -1;
        }
        int f = q.back();
        q.pop_back();
        return f;
    }
};

/**
 * 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();
 */

 

SAP Gateway 中事务码 /IWFND/MAINT_SERVICE 的用法介绍 本文系统梳理了SAP Gateway中/IWFND/MAINT_SERVICE事务码的核心功能与运维实践。作为OData服务管理中樞,它支持服务注册激活、ICF节点配置、系统别名绑定、批量处理等关键操作。文章详解了服务目录、ICF节点、系统别名的配置要点,提供了批量激活、缓存清理、性能监控等实用技巧,并针对常见陷阱(如传输配置、删除残留)给出解决方案。通过制造业批量激活、零售业OAuth集成等案例,展示了事务码在企业级应用中的实际价值,为SAP Gateway运维提供了一套完整的治理清单。 阅读详情

相关推荐

麦克风声源定位原理_声源定位—如何定位到噪声根源?

前言TPA(传递路径分析)专题系列已经开篇。其遵循方法论:源(Source)——路径(Path)——响应(Receiver)有人说TPA好,它可以识别出路径处甚至源的载荷特征,可以量化各个路径的贡献量。有人说声源定位好,不管东西南北中,“源”自其中。但是,声源定位识别出来色彩丰富的一个结果,这结果被您拿来应付工作了,还是真正帮您解决了问题?声源定位定位到了噪声的根源了么?对于一些声源现,...

weixin_39943678的博客 3973

C++队列queue的front()方法

C++队列queue的front()方法 代码 #include<queue> #include<iostream> #include<vector> #define N 100 using namespace std; struct Node{ int lv;//记录当前层数 int wei;//当前重量 int val;//当前价值 int status[N];//当前存储数组 }; int main(){ queue<Node> q;

hhb442的博客 1万+

【硬核指南/MI50 32G/Ubuntu】从零部署大模型:MI50显卡Ubuntu系统驱动安装与避坑全记录

本文详细记录了在Ubuntu系统上为AMD MI50显卡安装驱动并部署大模型的完整流程,包括硬件兼容性检查、BIOS关键设置、系统安装优化、ROCm驱动安装及常见问题解决方案。特别针对MI50显卡在X99平台上的特殊配置需求提供了实用技巧,帮助用户避免常见陷阱,提升大模型训练效率。

weixin_42520909的博客 806

队列操作---

队列,数据结构

weixin_45924062的博客 390

Unity 升级 xLua 版本,编译不同平台链接库

Unity 升级 xLua 详解

LymanCao的专栏 1801

增量式PID的P和I怎么理解(一)

增量式PID的P、I理解之推翻片 据我所知的资料里关于PID三个参数的理解是这样的:(我这里只说P和I,先不说D) P的作用:比例P可以加快系统调节速度,P过小调节时间变长,响应性不够,P越大响应性越高超调也越严重,过大的P会使系统振荡。 I的作用:消除静差,提高控制精度,I越大越滞后,过大会使系统振荡。 ...

fangchenglia的博客 1万+

queue.front()返回空元素

今天发现一个有意思的现象,当queue的元素全部pop出来了,queue.size() == 0,此时执行queue.front()不会出错,而是会返回一个空的元素。 测试代码: #include <iostream> #include <queue> struct TestItem { int a; int b; std::string c; }; int...

fang437385323的专栏 8897

高级数据库--作业及答案

中科大金培权老师的高级数据库课程作业及答案

一杯水果茶!足矣~ 1657

STL——queue模板类常见函数

#include<queue>//包含头文件 建立queue queue<int> que;//建立一个queue 1、获取queue里的元素个数 int len = que.size(); 2、queue常见函数 que.back(); 返回最后一个元素 que.empty(); 如果队列空则返回真 que.front();...

chenchen_fcj程序猿的博客 1243

使用R语言整理GEO数据的简易教程

本教程介绍了使用R语言从GEO数据库下载数据并进行数据整理的基本步骤。根据实际研究问题,你可能需要进行更复杂的数据处理和分析。R语言作为一种强大的生物信息学工具,为GEO数据的整理、分析和可视化提供了丰富的功能和工具。希望这个教程能够帮助你入门GEO数据整理和R语言的应用。如果你在使用过程中遇到问题,或需要进一步的指导,请随时向我询问。祝你在GEO数据分析的旅程中取得成功!

Mrrunsen的博客 3742

励磁电感 Lm 选对了,LLC 才真“高效”:半桥 LLC 效率优化

你有没有遇到过这种 LLC:参数一套下来,ZVS 也有了,波形看着也“挺谐振”,但一上功率——,效率就是死活上不去。我说句直白的:LLC 的“高效”,很大一部分其实是在背后控场。Lm 选小了,励磁电流蹭蹭涨,谐振电流 RMS 变大,导通损耗、开关损耗、整流损耗一起上天;Lm 选太大,又可能把 ZVS 的门槛抬高,轻载掉 ZVS,EMI 也开始作妖。

weixin_43199439的博客 435

c语言中queue头文件,C ++ STL中的queue :: front()和queue :: back()

在本文中,我们将讨论C ++ STL中queue::front()和queue::back()函数的工作,语法和示例。C ++ STL中的队列是什么?队列是C ++ STL中定义的简单序列或数据结构,它以FIFO(先进先出)的方式插入和删除数据。队列中的数据以连续方式存储。元素将插入到末尾,并从队列的开头删除。在C ++ STL中,已经有一个预定义的队列模板,该模板以类似于队列的方式插入和删除数据...

weixin_36210904的博客 3773

1.07---共识机制详解(PoW、PoS、DPoS 对比)

【摘要】区块链能成为“无需信任的协作网络”,靠的正是它的“共识机制”。本节将深入剖析 PoW、PoS、DPoS 等核心共识模型,并结合以太坊从 PoW 到 PoS 的转型与 Solana 等新型方案,为你拆解这一决定区块链运行方式、性能、安全性的“发动机系统”。什么是共识机制?为何不是多数投票这么简单?三大主流共识算法(PoW、PoS、DPoS)机制对比与演化路线以太坊从 PoW 到 PoS 的转型细节(The Merge)Solana 的 PoH + PoS 混合共识机制解析。

鄙人kunzhi96,感恩遇见! 1万+

[链表]leetcode1670-设计前中后队列

[链表]–设计前中后队列 题目链接 leetcode 1670.设计前中后队列 题目 请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void pushMiddle(int val) 将 val 添加到队列的 正中间 。 void pushBack(int val) 将 val 添加到队里的 最

weixin_44014218的博客 405

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

力扣1670.设计前中后队列

【代码】力扣1670.设计前中后队列。

Pisasama的博客 440

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode.1670. 设计前中后队列

LeetCode.1670. 设计前中后队列

weixin_62466612的博客 359

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【leetcode 1670. 设计前中后队列】

1670. 设计前中后队列题目使用两个数组使用链表 题目 请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void pushMiddle(int val) 将 val 添加到队列的 正中间 。 void pushBack(int val) 将 val 添加到队里的 最后面 。 int popF.

luna0_0的博客 191

Leetcode—1670.设计前中后队列【中等】

erase(iterator position)在删除vector中的元素后,会将该元素的后面所有元素都往前挪一位。因此,原先的迭代器指向的元素就不是原来那个了,而是它的后一位元素。

Atticus的博客 329

LeetCode 1670. 设计前中后队列

请你设计一个队列,支持在前,中,后三个位置的push和pop操作。请你完成valvalval-1-1-1请注意当有中间位置的时候,选择靠前面的位置进行操作。63// [// [1,// [1,, 2]// [1,, 3, 2]// 返回 1 -> [4, 3, 2]// 返回 3 -> [4, 2]// 返回 4 -> [2]// 返回 2 -> []// 返回 -1 -> [] (队列为空)1000pushFront,pushBack,popFront,popMiddle。

m0_56090828的博客 1416

LeetCode[1670]设计前中后队列

LeetCode[1670]设计前中后队列 java解法

月亮被咬碎成星星的博客 293

leetcode1670. 设计前中后队列

/ 返回 -1 -> [] (队列为空)q.popFront();// 返回 1 -> [4, 3, 2]q.popMiddle();// 返回 3 -> [4, 2]q.popMiddle();// 返回 4 -> [2]q.popBack();// 返回 2 -> []中间位置的时候,选择靠前面的位置进行操作。请你设计一个队列,支持在前,中,后三个位置的。

Turboyiyi的博客 407

LeetCode 1670. 设计前中后队列(deque)

文章目录1. 题目2. 解题 1. 题目 请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void pushMiddle(int val) 将 val 添加到队列的 正中间 。 void pushBack(int val) 将 val 添加到队里的 最后面 。 int popFront() 将 最前

Michael是个半路程序员 1709

双向队列:LeetCode1670 设计前中后队列

1670. 设计前中后队列请你设计一个队列,支持在前,中,后三个位置的push和pop操作。请你完成FrontMiddleBack类: FrontMiddleBack()初始化队列。 void pushFront(int val)将val添加到队列的最前面。 void pushMiddle(int...

weixin_40601604的博客 118

【Leetcode刷题篇】- Leetcode1670 设计前中后队列

请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void pushMiddle(int val) 将 val 添加到队列的 正中间 。 void pushBack(int val) 将 val 添加到队里的 最后面 。 int popFront() 将 最前面 的元素从队列中删除并返回值,如果删除之

Mind_programmonkey的博客 329

【数据结构-队列】力扣1670. 设计前中后队列

从 [1, 2, 3, 4, 5, 6] 的中间位置弹出元素,返回 3 ,数组变为 [1, 2, 4, 5, 6]。int popMiddle() 将 正中间 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回 -1。将 6 添加到 [1, 2, 3, 4, 5] 的中间位置,结果数组为 [1, 2, 6, 3, 4, 5]。int popFront() 将 最前面 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回 -1。// 返回 1 -> [4, 3, 2]

sjsjs11的博客 461

​LeetCode解法汇总1670. 设计前中后队列

/ 返回 -1 -> [] (队列为空)q.popFront();// 返回 1 -> [4, 3, 2]q.popMiddle();// 返回 3 -> [4, 2]使用List实现,虽然效率低了点,但是暂时也没想到更好的解决方案。// 返回 4 -> [2]q.popBack();// 返回 2 -> []中间位置的时候,选择靠前面的位置进行操作。请你设计一个队列,支持在前,中,后三个位置的。

分享+记录 255
上一篇: Leetcode 1669. 合并两个链表
下一篇: Leetcode 1671. 得到山形数组的最少删除次数
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值