Leetcode 1114. 按序打印
Published on 2022-05-18 09:01 in 分类: C/C++ with 萧海~
分类: C/C++

Leetcode 1114. 按序打印

    在这里插入图片描述
    给你一个类:

    public class Foo {
    public void first() { print("first"); }
    public void second() { print("second"); }
    public void third() { print("third"); }
    }

    三个不同的线程 A、B、C 将会共用一个 Foo 实例。

    • 线程 A 将会调用 first() 方法
    • 线程 B 将会调用 second() 方法
    • 线程 C 将会调用 third() 方法

    请设计修改程序,以确保 second() 方法在 first() 方法之后被执行,third() 方法在 second() 方法之后被执行。

    提示:

    • 尽管输入中的数字似乎暗示了顺序,但是我们并不保证线程在操作系统中的调度顺序。
    • 你看到的输入格式主要是为了确保测试的全面性。

    示例 1:

    输入:nums = [1,2,3]
    输出:"firstsecondthird"
    解释:
    有三个线程会被异步启动。输入 [1,2,3] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 second() 方法,线程 C 将会调用 third() 方法。正确的输出是 "firstsecondthird"。

    示例 2:

    输入:nums = [1,3,2]
    输出:"firstsecondthird"
    解释:
    输入 [1,3,2] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 third() 方法,线程 C 将会调用 second() 方法。正确的输出是 "firstsecondthird"。

    提示:

    • nums 是 [1, 2, 3] 的一组排列

    主要思路:利用queue-先进先出特性

    Code:

    class Foo {
    public:
    Foo() {
    que.push(1);
    que.push(2);
    que.push(3);
    }
    void first(function<void()> printFirst) {
    // printFirst() outputs "first". Do not change or remove this line.
    printFirst();
    que.pop();
    }
    void second(function<void()> printSecond) {
    // printSecond() outputs "second". Do not change or remove this line.
    while(1)
    {
    while(que.front()==2)
    {
    printSecond();
    que.pop();
    return ;
    }
    }
    }
    void third(function<void()> printThird) {
    // printThird() outputs "third". Do not change or remove this line.
    while(1)
    {
    while(que.front()==3)
    {
    printThird();
    que.pop();
    return ;
    }
    }
    }
    private:
    queue<int>que;
    };
    posted @   萧海~  阅读(42)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    历史上的今天:
    2021-05-18 Qt Creator构建HelloWorld出现Qt\Tools\QtCreator\bin\jom.exe"退出,退出代码 2 错误解决
    2021-05-18 TensorFlow 线性回归
    2021-05-18 开源下载地址
    点击右上角即可分享
    微信分享提示
    电磁波切换