判断是否为正确出栈顺序

bool fun(vector<int>& track, vector<int>& nums) {
    stack<int> t;
    int i = 0,j=0;
    for (int i = 0; i < nums.size();i++) {
        if (t.empty()||t.top() != track[j]) {
            t.push(nums[i]);
        }
        else {
            t.pop();
            j++,i--;//使得i的值在下一循环不变
        }

    }
    while (!t.empty()&&t.top() == track[j]) {
		//判断条件有top()这种一定要加越界判断,且写在top()判断句前面
        t.pop();
        j++;
    }
    return t.empty();
}
//nums为进栈顺序,判断track是否合理。
posted @ 2021-11-18 20:22  Zupernova  阅读(69)  评论(0编辑  收藏  举报