[毎日の質問] 28:スタックのプッシュとポップのシーケンス

タイトルの説明

2つの整数シーケンスを入力してください。最初のシーケンスはスタックシーケンスを示しています。2番目のシーケンスがスタックのポップシーケンスであるかどうかを確認してください。スタックにプッシュされたすべての数値が等しくないと仮定します。

例:

シーケンス1,2,3,4,5はスタックのプッシュシーケンス、シーケンス4,5,3,2,1はスタックシーケンスに対応するポップアップシーケンスですが、4,3,5,1,2はプッシュシーケンスのポップシーケンスにすることはできません。(注:2つのシーケンスの長さは同じです)

回答コード:

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int> tmp;
        int i = 0;
        
        for(auto & vi : pushV){
            tmp.push(vi);
            
            for(; !tmp.empty() && tmp.top() == popV[i]; ++i){
                tmp.pop();
            }
        }
        return tmp.empty();
    }
};

他に異なる意見がある場合は、メッセージを残して議論してください~~~

元の記事を152件公開 賞賛されている45件 10,000回以上の閲覧

おすすめ

転載: blog.csdn.net/AngelDg/article/details/105378423