スタックを使用して、シーケンスの順序が正しいかどうかを確認します

例:既存のシーケンスシーケンスは32541で、スタックシーケンスは12345です。32541が有効かどうかを確認するための
アルゴリズムは次のとおりです。

bool check_is_valid_order(std::queue<int>& order) {
    
    
    stack<int> S;
    int n = order.size();
    for (int i = 0; i <= n; i++)
    {
    
    
        S.push(i);
        while (!S.empty()&&order.front()==S.top())
        {
    
    
            S.pop();
            order.pop();
        }
    }
    if (!S.empty())
    {
    
    
        return false;
    }
    return true;
}

ps:リトルエレファントアカデミーチュートリアルのメモhttps://www.bilibili.com/video/BV1GW411Q77S?t=7029&p=2

おすすめ

転載: blog.csdn.net/weixin_44427114/article/details/107895419