题解 | 区间翻转

区间翻转

https://www.nowcoder.com/practice/34e434465a3b46d29c581fee5d73bc81

#include <iostream>
#include<vector>
#include<deque>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,k;
    cin>>n>>k;
    int out=0,insert=0;
    deque<int>dq;
    int dir=0;
    vector<int>res;
    auto push=[&](int x){
        dir==0?dq.push_back(x):dq.push_front(x);
    };
    auto pop=[&](){
        res.push_back(dir==0?dq.front():dq.back());
        dir==0?dq.pop_front():dq.pop_back();
    };
    while(k--){
        int l,r;
        cin>>l>>r;
        while(insert<r){
            push(insert+1);
            insert++;
        }
        while(out<l-1){
            pop();
            out++;
        }
        dir^=1;
    }
    while(insert<n){
        push(insert+1);
        insert++;
    }
    while(out<n){
        pop();
        out++;
    }
    for(int i=0;i<res.size();i++){
        if(i>0)cout<<" ";
        cout<<res[i];
    }
    cout<<endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

StephenZ_:我9月份找的第一段实习也是遇到这种骗子公司了,问他后端有多少人和我说7个正职,进去一看只有一个后端剩下的都是产品前端算法(没错甚至还有算法)。还是某制造业中大厂,我离职的时候还阴阳怪气我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务